qglwidget如何与主窗口中的其他小部件进行交互

时间:2015-07-19 16:21:55

标签: c++ qt opengl qglwidget

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

GLWidget

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

1 个答案:

答案 0 :(得分:1)

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

在释放密钥时将发出的GLWidget信号

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

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

并将此信号连接到textEdit插槽setText(const QString & text)