ubuntu16下用QT5,实现对话框程序,步骤:生成界面Dialog.ui,将它应用到主程序,通过主程序显示。
一 界面练习
1 Dialog.ui界面生成
在命令行输入:designer
进入界面编辑,然后生成MyDialog.ui,下图为本例的界面
2 将Dialog.ui文件拷贝到当前project下,并“添加现有”到本工程
3编辑main.cpp文件:
#include <QDialog>
#include <QApplication>
#include <ui_mydialog.h> //注意将mydialog.ui的名字重命名ui_mydialog.h,此文件暂时没有,不用担心编译不过,预编译会自动将它补上。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Ui::mydialog ui;
QDialog *dialog = new QDialog; // 生成一个普遍的对话框dialog
ui.setupUi(dialog); // 将dialog与当前用户自定义界面绑定
dialog->show(); // 输出此对话框
return a.exec();
}
二 让界面有用
在以上基础上,要想生成自己“有用”界面,需要做如下处理,首先,构建你自己的对话框,它的来历是双继承完成的,即你的对话框又继承界面Dialog.ui
还继承系统QDialog,让系统消息和界面事件共同起作用。如图:
构建头文件dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include "ui_dialog.h"
class myDialog : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
myDialog(QWidget *parent = 0);
private slots:
void on_lineEdit_textChanged();
};
#endif // DIALOG_H
和实现文件:dialog.cpp
#include <QtGui>
#include "dialog.h"
myDialog::myDialog(QWidget *parent)
: QDialog(parent)
{
setupUi(this);
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
lineEdit->setValidator(new QRegExpValidator(regExp, this));
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
}
void myDialog::on_lineEdit_textChanged()
{
okButton->setEnabled(lineEdit->hasAcceptableInput());
}
修改main.cpp
#include <QDialog>
#include <QApplication>
#include <dialog.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
myDialog *dialog = new myDialog;
dialog->show();
return a.exec();
}
通过以上三个步骤,编译程序,只要点击OK按钮能够有所反应,说明构建基本完成。