【发布时间】:2017-12-28 11:41:59
【问题描述】:
在这里写之前我搜索了很多。我找到了几个帖子,但我无法完全理解它们。所以我要开始一个新帖子了。
我正在开发一个简单的用户界面。有这个主类(见下文),它是一个主对话框,在应用启动时显示。
class MainWindow : public QMainWindow
MainWindow 对话框上的按钮很少,当我单击一个按钮时,它会隐藏MainWindow 并打开另一个QDialog 框。该对话框属于如下所示的类
class libinsert : public QDialog
我以这种方式创建libinsert 对象:
void MainWindow::on_pushButton_clicked()
{
this->hide();
libinsert lib; // I create libinsert object this way
lib.setModal(true);
lib.exec();
}
这是libinsert.cpp:
libinsert::libinsert(QWidget *parent) :
QDialog(parent),
ui(new Ui::libinsert)
{
ui->setupUi(this);
}
当libinsert 对话框打开时,我需要访问一个套接字变量,它是class MainWindow 的成员。我如何做到这一点?
我的主应用如下所示:
{
QApplication a(argc, argv);
MainWindow w(sock);
w.show();
return a.exec();
};
或者:通常如何构建多个对话框,作为父子关系?
【问题讨论】:
-
如何创建 libinsert 对象?你作为父母传递给 QMainWindow 吗?
-
编辑您的问题并将其添加到那里,此外我还要求您展示如何创建 libinsert 类的对象。
-
您真的需要从
libinsert访问socket变量,还是只想告诉MainWindow对socket变量做点什么? -
整个 GUI 将在单独的线程中运行。启动应用程序时会创建 2 个套接字,并将 1 个分配给此 GUI 线程,将另一个分配给主进程。这样双方就可以交流了。并且套接字到 GUI 线程的传递只发生一次,所以只有 MainWindow 可以保存它(所以我希望 MainWindow 存在直到应用程序关闭)