我有一个带有QCheckBox和QPushButton的Qt主窗口和一个用于图形渲染的子QGLwidget类窗口小部件。
我已加入void Ui_MainWindow::setupUi(QMainWindow *MainWindow)
成员函数:
void Ui_MainWindow::setupUi(QMainWindow *MainWindow)
{
pushButton_2 = new QPushButton(widget);
...
checkBox_3 = new QCheckBox(widget);
...
widget_2 = new GLWidget(widget);
widget_2->setFocusPolicy(Qt::StrongFocus);
widget_2->setFocus();
...
}
我创建了修改widget_2
:
void Ui_MainWindow::createSignals()
{
...
connect(pushButton_2, SIGNAL(clicked()), this, SLOT(pauseSimu()));
connect(checkBox_3, SIGNAL(clicked()), this, SLOT(hideClassic()));
...
}
尽管点击widget_2
或pushButton_2
,我仍然要始终关注checkBox_3
,我必须加入pauseSimu()
和hideClassic()
:
void Ui_MainWindow::pauseSimu()
{
widget_2->setFocus();
...
}
和
void Ui_MainWindow::hideClassic()
{
widget_2->setFocus();
...
}
widget_2 GLWidget
上的关键事件在GLWidget类成员函数中编码。
我怎样才能避免在所有信号函数中使用setFocus()
来始终关注widget_2
GLWidget?
答案 0 :(得分:1)
尝试在按钮和复选框上调用setFocusPolicy(Qt::NoFocus)
。