Qt: развернутая рамка

У меня есть вопрос новичка. Я пытаюсь создать развернутый 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

Решение

функциям / методам обычно нужен список аргументов, даже пустой -> object-> method () Попробуйте использовать скобки.

Вы в конечном итоге хотите:

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

Редактировать:
или как ваше решение:

w->setWindowState(w->windowState() | Qt::WindowMaximized);
2

Другие решения

В дополнение к тому, что уже заметили другие, совершенно непродуктивно передавать текущее приложение или указатель на рабочий стол. Указатель приложения всегда доступен через глобальный 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
}
1

По вопросам рекламы [email protected]