"Must construct a QApplication before a QWidget"
"Must construct a QApplication before a QWidget"
我正在尝试制作一个简单的Qt程序。我已经成功地构建并运行了该程序好几次。当我添加了一个getter方法来将字符串从MainWindow传递到对话框的QFileDialog::getSaveFileName()
时,就会出现这些错误。但当我在下面几行注释时,程序就会成功运行
主窗口.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
QString fileName();
};
主窗口.cpp
QString MainWindow::fileName() {
return "F:/Users/Admin/Desktop/" + dnldName;
}
fileName()的用法
void Dialog::on_browseButton_clicked()
{
QFileDialog folder;
folder.setFileMode(QFileDialog::Directory);
folder.setOption(QFileDialog::ShowDirsOnly);
dirPath = folder.getSaveFileName(this, tr("Save File"), mWinObj.fileName(), tr("All Files"));
ui->savePathEdit->setText(dirPath);
}
该程序构建成功,但在我尝试运行时出现以下错误。
Starting F:UsersAdminDesktopImp DocsC++ appsbuild-GUINetworkApp-Desktop_Qt_5_2_0_MinGW_32bit-DebugdebugGUINetworkApp.exe...
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
F:UsersAdminDesktopImp DocsC++ appsbuild-GUINetworkApp-Desktop_Qt_5_2_0_MinGW_32bit-DebugdebugGUINetworkApp.exe exited with code 3
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
代码出了什么问题,我该如何修复?
您不能将小部件创建为全局对象,因为这些对象将在主函数中的应用程序对象之前创建。那么你的错误就会发生。
在构建QApplication对象后,在主函数中创建小部件,或者如果您想要全局访问,只需保留一个指向小部件的全局指针(但这不是一种好的编程风格)。
相关文章:
- 如何在QT Creator上将QWidget声明为继承类的对象
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 将一个 QWidget 链接到另一个新创建的 QWidget
- 为什么我的功能在使用 goto 时会给我带来"expected primary-expression before '}' token"?
- 为什么 isVisible 在 QWidget 孩子中不起作用
- 如何声明全局QWidget?
- QWidget UI 在使用 QQuickWidget 时冻结
- "(QWidget* pobj=0)"和"(QWidget* pwgt/*=0/)&quo
- qt QWidget::closeEvent link issue
- 如何在QMdiSubWindow关闭后删除QWidget
- 如何修复此错误"expected primary expression before 'int'"?
- 如何在QGraphicsView中移动QWidget?
- 为什么在main()之前断言会导致语法错误"error: expected ')' before numeric constant"?
- 使用结构和数组时的"expected primary expression before '.' token"
- QPainter的QWidget滚动条
- 如何解决"Expected expression before " = " token"?
- 在类中创建 QWidget
- 在另一个小部件中更改QWidget的背景颜色
- "Must construct a QApplication before a QWidget"