0

我有一个初学者问题。我正在尝试使用以下代码创建一个最大化的 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++ 的初学者,请问我缺少什么?

4

2 回答 2

2

函数/方法通常需要参数列表,即使是空的 -> object->method() 尝试使用括号。

你最终想要:

w->setWindowState(w->windowState() | Qt::WindowFullScreen);

编辑:或作为您的解决方案:

w->setWindowState(w->windowState() | Qt::WindowMaximized);
于 2013-10-02T09:25:10.820 回答
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
}
于 2013-10-03T04:26:31.103 回答