我正在设计一个系统,其中包含一个Mainwindow和另外三个窗口。主窗口包含一个菜单按钮和四个Qlabels。点击菜单,它将打开第二个窗口。它包含两个按钮。单击第二个窗口中的第一个按钮将打开第三个窗口,单击第二个窗口中的第二个按钮将打开第四个窗口。第三和第四个窗口包含两个按钮。
当我在第三个窗口按第一个按钮时,我想在主窗口的第一个Qlabel中设置一些文本。同样当我在第三个窗口按第二个按钮时,我想在主窗口的第二个Qlabel中设置一些文本。 同样,我想设置Qlabel 3& 4基于第四窗口的按钮。
我读取信号和插槽机制,以及其他论坛,但我没有获得连接信号和插槽的流程。
要从上一个窗口打开新窗口,我将添加新的Qt类并编写
void MainWindow::on_pushButton_3_clicked()
{
SecDialog secDialog;
secDialog.setModal(true);
secDialog.exec();
}
在每个窗口中,并在点击按钮时从第四窗口发出信号
fouthwindow.cpp
void ForthDialog::on_pushButton_clicked()
{
emit mode1("Manualset");
}
我在4thwindow.h中声明了这个。
signals :
void mode1(QString) ;
如何从主窗口接收此信号?
答案 0 :(得分:3)
您可以从代码中可以访问的位置简单地建立连接:
void MainWindow::on_pushButton_3_clicked()
{
SecDialog secDialog;
secDialog.setModal(true);
connect(&secDialog, &SecDialog::mode1, this, &MainWindow::yourSlot);
secDialog.exec();
}
然后处理它
void MainWindow::yourSlot()
{
ui->myLabel->setText("...");
}
一些建议
ForthDialog
。如果这些是你真正的班级名称QDialog
返回代码。使用accept()
,reject()
或done()
,您可以直接从exec()
来电的返回值中读取结果