用 Qt4 Designer 配合程序设计(2)

点 File -> Save Form,把它存到 myfind 目录里,命名为 myfinddialog.ui。

编写启动函数(main)

打开 KDevelop,在 myfind 目录中新建文件 myfind.cpp,输入如下代码:

#include <QApplication>
#include <QDialog>

#include "ui_myfinddialog.h"

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);
 Ui_FormFindText ui;
 QDialog *dialog = new QDialog;
 ui.setupUi(dialog);
 dialog->show();
 
 return app.exec();
}

编译运行

cd /root/learn/qt4/myfind

qmake-qt4 -project

qmake-qt4

make

./myfind 会得到下面的窗口:

用 Qt4 Designer 配合程序设计

加入几个事件

下面实现这个功能:当文本框中有输入的时候才让 OK 按钮有效,默认认它无效。

先把 pbnOK 按钮的 enabled 属性设置为 false,把 default 设为 true,然后加入 myfinddialog.h 和 myfinddialog.cpp,源代码分别如下所示:

// myfinddialog.h

#ifndef MY_FINDDIALOG___H
#define MY_FINDDIALOG___H

#include <QDialog>
#include "ui_myfinddialog.h"

class MyFindDialog : public QDialog, public Ui_FormFindText
{
 Q_OBJECT
 public:
  MyFindDialog(QWidget *parent = 0);
 private slots:
  void on_textChanged();
};

#endif

// myfinddialog.cpp
#include <QtGui>
#include "myfinddialog.h"

MyFindDialog::MyFindDialog(QWidget *parent)
 : QDialog(parent)
{
 setupUi(this);
 
 connect(pbnOK, SIGNAL(clicked()), this, SLOT(accept()));
 connect(pbnCancel, SIGNAL(clicked()), this, SLOT(reject()));
 connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(on_textChanged()));
}

void MyFindDialog::on_textChanged()
{
 pbnOK->setEnabled(lineEdit->hasAcceptableInput());
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/4b935bc005e86d633b35c04076843947.html