我有一个初学者的问题。我尝试使用以下代码创建最大化的QFrame,但我收到的错误是:
error C3867: 'QWidget::showMaximized': function call missing argument list; use '&QWidget::showMaximized' to create a pointer to member
代码:
class FrameWindow{
private:
QDesktopWidget *desktop;
QFrame frame_window;
QRect frame_rect;
public:
FrameWindow(QApplication& app){
desktop = app.desktop();
desktop->showMaximized;
frame_window.setWindowTitle("QT Trainning");
frame_window.show();
}
我在C ++中是一个初学者,所以我错过了什么?
答案 0 :(得分:2)
函数/方法通常需要参数列表,即使是空的 - >> object-> method()尝试使用括号。
你最终想要:
w->setWindowState(w->windowState() | Qt::WindowFullScreen);
编辑: 或作为您的解决方案:
w->setWindowState(w->windowState() | Qt::WindowMaximized);
答案 1 :(得分:1)
除了其他人已经注意到的内容之外,传递当前应用程序或保持指向桌面的指针完全适得其反。应用程序指针始终可通过全局qApp
宏获取。要获得桌面,只需使用
qApp->desktop()
绝对没有理由“缓存”此值。只要你需要它就可以得到它,就是这样。
从小部件类型派生,而不是将其作为成员保存,这也更为惯用。代码可以简化如下。这是一个完整的,独立的例子。
#include <QFrame>
#include <QApplication>
class FrameWindow : public QFrame {
public:
FrameWindow(QWidget * parent = 0, Qt::WindowFlags * flags = 0) :
QFrame(parent, flags)
{
setWindowTitle("Qt Training");
setWindowState(windowState() | Qt::WindowMaximized);
}
};
int main(int argc, char ** argv) {
QApplication app(argc, argv);
FrameWindow fw; // constructor is called here
fw.show();
return app.exec();
// FrameWindow::~FrameWindow() destructor is called first before exiting
// QApplication::~QApplication() destructor is called next
}