我制作了一个快速测试程序,执行时似乎没有显示任何内容。这是我的代码:
z_lock.h
#ifndef Z_LOCK_H
#define Z_LOCK_H
#include <QtGui>
class z_lock : public QMainWindow
{
Q_OBJECT
public:
z_lock();
private slots:
void password_check();
void quit();
private:
QStackedWidget *book;
QWidget *page1;
QWidget *page2;
QLineEdit *input;
};
#endif
z_lock.cpp
#include "z_lock.h"
z_lock::z_lock(){
book = new QStackedWidget;
//page1
page1 = new QWidget;
QLabel *label1 = new QLabel("Enter password.");
input = new QLineEdit;
QPushButton *goButton = new QPushButton("Go");
connect(goButton, SIGNAL(clicked()), this, SLOT(password_check()));
QHBoxLayout *layout1;
layout1 -> addWidget(label1);
layout1 -> addWidget(input);
layout1 -> addWidget(goButton);
page1 -> setLayout(layout1);
//page2
page2 = new QWidget;
QLabel *label2 = new QLabel("Welcome, you're in.");
QVBoxLayout *layout2;
layout2 -> addWidget(label2);
page2 -> setLayout(layout2);
book -> addWidget(page1);
book -> addWidget(page2);
setCentralWidget(book);
}
void z_lock::quit(){
close();
}
void z_lock::password_check(){
QString guess = input -> text();
if (guess == "apple"){
z_lock::book -> setCurrentIndex(1);
}
}
main.cpp
#include "z_lock.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
z_lock *that;
that -> show();
return app.exec();
}
拜托,任何帮助都可以。我已经对与 QMainWindow 有关的一切进行了研究,但仍然一无所获。这可能很容易解决,对于这样一个基本问题,我很抱歉。
最佳答案
您的代码中有几个问题...让我们从最重要的开始:
您正在将 main.cpp 中的对象分配到堆上,这本身就是一个问题,但即使您这样做了,您也应该使用
new
关键字在 C++ 中。话虽这么说,你真的不应该在堆上分配它:部分原因是它会泄漏内存,但更重要的是没有必要这样做。
因此,替换这些行:
z_lock *that;
that -> show();
只需这样:
z_lock that;
that.show();
对于您的布局,这也是几乎相同的问题:
QHBoxLayout *layout1;
QVBoxLayout *layout2;
请将它们更改为:
QHBoxLayout *layout1 = new QHBoxLayout;
QVBoxLayout *layout2 = new QVBoxLayout;
此外,您不应该像这样包含整个 QtGui 模块:
#include <QtGui>
只包含您最终需要的类。尽管这是在一些 Qt 4 书中,但这是不好的做法。
此方法在您的代码中也是无用的,因为它除了包装现有插槽外什么都不做:
void z_lock::quit(){
close();
}
此外,您可能希望使用 tr()
方法来获取其他语言的翻译:
QLabel *label1 = new QLabel("Enter password.");
关于c++ - QMainWindow 没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019969/