qglwidget 如何与主要 window 中的其他小部件交互

how qglwidget interacts with with other widgets in the main window

基本上我想在 Text Edit 小部件上显示按下的按钮。 Key 事件适用于 GLWidget。我如何与 GLWidgetMainWindow 的小部件进行交互?到目前为止,这是我的代码,

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_startButton_clicked()
{

}

glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QTimer>
#include <QtOpenGL/QGLWidget>
#include <gl/GLU.h>
#include <gl/GL.h>
#include <QKeyEvent>


class GLWidget : public QGLWidget
{
    Q_OBJECT

public:
    explicit GLWidget(QWidget *parent = 0);
    ~GLWidget();

protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);

    //--------------( Key Event )-----------------//
    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *event);

private:
    QTimer timer;

};

#endif // GLWIDGET_H

glwidget.cpp

.
.
.    
void GLWidget::keyPressEvent(QKeyEvent *event)
{
   qDebug() << event->text() << " is pressed ...";
}

void GLWidget::keyReleaseEvent(QKeyEvent * event)
{
    qDebug() << event->text() << " is released ...";

     //ui->textEdit->setText("hhh"); <- ????????????????

}

您可以像其他任何小部件一样进行操作。

在您的 GLWidget 中放置一个信号,当释放按键时将发出该信号

class GLWidget : public QGLWidget
{
    ....
signals:
    void textChanged(QString text); 
}

void GLWidget::keyReleaseEvent(QKeyEvent * event)
{
    qDebug() << event->text() << " is released ...";
    emit textChanged(event->text());
}

并将此信号连接到您的文本编辑插槽 setText(const QString & text)