我剛開始學習QT,我想完成的是在按鈕上點擊彈出消息。 這裏是我的文件看起來像:QT消息框不彈出按鈕點擊
的main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QMessageBox>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow *mainWindow = new MainWindow();
QLabel *text = new QLabel("Some text");
QPushButton *btn = new QPushButton("Click");
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(btn);
layout->addWidget(text);
QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(popup()));
mainWindow->setLayout(layout);
mainWindow->show();
return app.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::popUp()
{
QMessageBox::information(this, "New Box", "Message");
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void popUp();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
你能解釋一下我做錯了什麼,或者在我的代碼中缺少某些東西。
什麼是中央控件?我得到這個小部件的錯誤:mainwindow.cpp:19:error:invalid use of incomplete type'class QLayout' ui-> centralWidget-> layout() - > addWidget(btn); ^ – Viktor
測試返回請更新我的答案。 – eyllanesc
@感謝你的工作!你能解釋爲什麼在這一行連接(btn,&QPushButton :: clicked,this,&MainWindow :: popUp);我們必須使用&QPushButton :: clicked和&MainWindow :: popUp,而不是connect(btn,SIGNAL(clicked()),this,SLOT(popUp())); – Viktor