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

 

posted on 2017-02-10 11:37  公迪  阅读(671)  评论(0编辑  收藏  举报