У меня есть вопрос новичка. Я пытаюсь создать развернутый 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 ++, так чего мне не хватает, пожалуйста?
функциям / методам обычно нужен список аргументов, даже пустой -> object-> method () Попробуйте использовать скобки.
Вы в конечном итоге хотите:
w->setWindowState(w->windowState() | Qt::WindowFullScreen);
Редактировать:
или как ваше решение:
w->setWindowState(w->windowState() | Qt::WindowMaximized);
В дополнение к тому, что уже заметили другие, совершенно непродуктивно передавать текущее приложение или указатель на рабочий стол. Указатель приложения всегда доступен через глобальный 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
}