ubuntu16下用QT5实现对话框应用

时间:2022-11-27 23:13:44

ubuntu16下用QT5,实现对话框程序,步骤:生成界面Dialog.ui,将它应用到主程序,通过主程序显示。

一 界面练习

1 Dialog.ui界面生成

  在命令行输入:designer

  进入界面编辑,然后生成MyDialog.ui,下图为本例的界面

ubuntu16下用QT5实现对话框应用

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,让系统消息和界面事件共同起作用。如图:

ubuntu16下用QT5实现对话框应用

构建头文件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按钮能够有所反应,说明构建基本完成。