Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); secWidget=new SecWiget(); secWidget->show(); } int main(int argc, char *argv[]) { QApplication a(argc, argv); QList<QScreen*> screens=QGuiApplication::screens(); if (screens.size()==1) { Widget w; w.show(); } return a.exec(); } 这段代码中,在Widget类的构造函数中创建了一个新的QWidget对象secWidget并显示,但是最终的结果w窗口一闪而过,这是为什么
时间: 2024-02-04 20:03:46 浏览: 81
这是因为在创建Widget对象时,secWidget对象也被创建并显示在屏幕上,但是由于没有设置其父对象,它是一个独立的窗口,与主窗口w没有关联,所以当主窗口w被创建并显示后,secWidget对象就被覆盖并隐藏了。解决方法是将secWidget对象设置为w的子对象,即将其父对象设置为w,可以使用setParent()函数或者在构造函数中指定parent参数来实现。
相关问题
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); this->setWindowTitle("display"); ProInit(); SqlInit(); InitPlot(ui->widget); }
这段代码是一个 Qt 程序中的构造函数,用于初始化 Widget 类对象。在这个函数中,首先通过 `ui->setupUi()` 函数将 Widget 对象与 UI 界面进行关联,使得界面中的控件可以在代码中被访问和操作。
接下来,通过 `setWindowTitle()` 函数为 Widget 窗口设置了一个标题为 "display"。
然后,调用了 `ProInit()` 和 `SqlInit()` 两个函数进行程序的初始化。这两个函数分别用于初始化程序所需的一些全局变量和进行 SQLite 数据库的初始化操作。
最后,通过 `InitPlot(ui->widget)` 函数初始化了 `ui->widget` 控件中的一个绘图窗口。这个函数可能是用于初始化一个数据可视化的工具,例如在绘制曲线图或散点图时使用的 QCustomPlot 库。
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 设置UI界面
这段代码是一个构造函数,用于创建Widget对象并初始化UI界面。在这个构造函数中,我们首先调用了QWidget类的构造函数,将父类指针parent传递进去,然后创建了一个新的Ui::Widget对象ui,并调用了它的setupUi()函数,将UI界面设置到Widget对象上。
具体来说,ui对象是在Widget类中定义的一个指向Ui::Widget的指针,Ui::Widget是通过Qt Designer自动生成的头文件,它包含了UI类的定义,其中包括了UI界面上所有控件的声明和初始化。在调用ui->setupUi(this)函数时,会将UI界面上所有控件与Widget对象上的对应控件进行连接,从而完成UI界面的初始化。
需要注意的是,这个构造函数是自动生成的,你不需要手动编写它。如果你在Qt Designer中设计了UI界面,并将UI文件添加到了工程中,Qt Creator会自动为你生成这个构造函数。
阅读全文