是否可以像教程中那样在 main() 函数之外在 Qt 中创建一个窗口?我在这里做的他们的方式有什么问题?当我尝试编译时没有错误,但窗口永远不会出现。谢谢。
主要.cpp
#include <QtGui>
#include "Calculator.h"
int main(int argc, char *argv[]) {
QApplication application(argc, argv);
Calculator calculator();
return application.exec();
}
计算器.h
class Calculator {
public:
Calculator();
};
计算器.cpp
#include <QtGui>
#include "Calculator.h"
Calculator::Calculator() {
QWidget window;
window.show();
}
最佳答案
奇怪的是,这里有两个不同的错误:)
window
是构造函数中的局部变量,一旦构造函数退出,它就会超出范围(因此被销毁)。您必须使用持久对象(在函数退出后存在的对象),例如Calculator
的成员。- 在
main
中,代码Calculator calculator();
声明了一个返回Calculator
的函数calculator
。在 C++ 中实例化默认构造的对象时,这是一个常见的问题。在这种情况下,括号是不必要的(而且是有害的)。
修复这两个错误:
class Calculator {
public:
Calculator();
private:
QWidget m_window; // persistent member
};
Calculator::Calculator() {
m_window.show();
}
int main(int argc, char *argv[]) {
QApplication application(argc, argv);
Calculator calculator; // note, no () after calculator
return application.exec();
}
关于c++ - 在 main() 之外的 Qt 中创建一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619633/