Qt创建一个电话本界面程序
2011-10-03 01:33
627 查看
运行效果如图
其中点击Add new 会弹出如下面图中的对话框
具体实现步骤:
一、首先用 Qt Designer 创建一个两张图的对话框,分别保存为listdialog.ui和editdialog.ui文件
要注意其中各个空间对应的名称修改好
二、新建一个Qt应用程序工程,取名为listdialog
三、删除已有的listdialog.ui和ui_listdialog.h,listdialog.h,listdialog.cpp文件
四、将listdialog.ui和editdialog.ui文件复制到工程下并且导入到工程,运行,此时可能会报错,没关系
五、添加文件listdialog.h,listdialog.cpp,editdialog.h,editdialog.cpp
内容如下:
listdialog.h文件
listdialog.cpp文件
editdialog.h 文件
editdialog.cpp 文件
注意还要查看自动生成的 ui_editdialog.h 和 ui_listdialog.h
根据需要修改类的名称,上例中需要将ui_editdialog.h修改为如下:
现在编译运行就可以了
注意ui_editdialog.h有时候打不开,需要先编译一下,有错误没关系然后就可以打开了
其中点击Add new 会弹出如下面图中的对话框
具体实现步骤:
一、首先用 Qt Designer 创建一个两张图的对话框,分别保存为listdialog.ui和editdialog.ui文件
要注意其中各个空间对应的名称修改好
二、新建一个Qt应用程序工程,取名为listdialog
三、删除已有的listdialog.ui和ui_listdialog.h,listdialog.h,listdialog.cpp文件
四、将listdialog.ui和editdialog.ui文件复制到工程下并且导入到工程,运行,此时可能会报错,没关系
五、添加文件listdialog.h,listdialog.cpp,editdialog.h,editdialog.cpp
内容如下:
listdialog.h文件
#ifndef LISTDIALOG_H #define LISTDIALOG_H #include <QDialog> #include "ui_listdialog.h" class ListDialog : public QDialog { Q_OBJECT public: ListDialog(); ~ListDialog(); private slots: void addItem(); void editItem(); void deleteItem(); private: Ui::ListDialog ui; }; #endif // LISTDIALOG_H
listdialog.cpp文件
#include "listdialog.h" #include "editdialog.h" ListDialog::ListDialog() : QDialog() { ui.setupUi(this); connect(ui.addButton,SIGNAL(clicked()),this,SLOT(addItem())); connect(ui.editButton,SIGNAL(clicked()),this,SLOT(editItem())); connect(ui.deleteButton,SIGNAL(clicked()),this,SLOT(deleteItem())); } ListDialog::~ListDialog() { } void ListDialog::addItem() { EditDialog dlg(this); if(dlg.exec()==1) ui.list->addItem(dlg.name()+"--"+dlg.number()); } void ListDialog::editItem() { if(!ui.list->currentItem()) return; QStringList parts=ui.list->currentItem()->text().split("--"); EditDialog dlg(this); dlg.setName(parts[0].trimmed()); dlg.setNumber(parts[1].trimmed()); if(dlg.exec()==1) ui.list->currentItem()->setText(dlg.name()+"--"+dlg.number()); } void ListDialog::deleteItem() { delete ui.list->currentItem(); }
editdialog.h 文件
#ifndef EDITDIALOG_H #define EDITDIALOG_H #include <QDialog> #include "ui_editdialog.h" class EditDialog:public QDialog { public: EditDialog(QWidget*parent=0); const QString name() const; void setName(const QString&); const QString number() const; void setNumber(const QString&); private: Ui::EditDialog ui; }; #endif
editdialog.cpp 文件
#include "editdialog.h" EditDialog::EditDialog(QWidget *parent):QDialog(parent) { ui.setupUi(this); } const QString EditDialog::name()const { return ui.nameEdit->text().replace("--","").trimmed(); } const QString EditDialog::number() const { return ui.numberEdit->text().trimmed(); } void EditDialog::setName(const QString &name) { ui.nameEdit->setText(name); } void EditDialog::setNumber(const QString &number) { ui.numberEdit->setText(number); }
注意还要查看自动生成的 ui_editdialog.h 和 ui_listdialog.h
根据需要修改类的名称,上例中需要将ui_editdialog.h修改为如下:
#ifndef UI_EDITDIALOG_H #define UI_EDITDIALOG_H #include <QtCore/QVariant> #include <QtGui/QAction> #include <QtGui/QApplication> #include <QtGui/QButtonGroup> #include <QtGui/QDialog> #include <QtGui/QDialogButtonBox> #include <QtGui/QHBoxLayout> #include <QtGui/QHeaderView> #include <QtGui/QLabel> #include <QtGui/QLineEdit> #include <QtGui/QVBoxLayout> #include <QtGui/QWidget> QT_BEGIN_NAMESPACE class Ui_EditDialog { public: QDialogButtonBox *buttonBox; QWidget *layoutWidget; QHBoxLayout *horizontalLayout; QVBoxLayout *verticalLayout; QLabel *label; QLabel *label_2; QVBoxLayout *verticalLayout_2; QLineEdit *nameEdit; QLineEdit *numberEdit; void setupUi(QDialog *Dialog) { if (Dialog->objectName().isEmpty()) Dialog->setObjectName(QString::fromUtf8("Dialog")); Dialog->resize(360, 125); buttonBox = new QDialogButtonBox(Dialog); buttonBox->setObjectName(QString::fromUtf8("buttonBox")); buttonBox->setGeometry(QRect(0, 80, 341, 41)); buttonBox->setOrientation(Qt::Horizontal); buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); layoutWidget = new QWidget(Dialog); layoutWidget->setObjectName(QString::fromUtf8("layoutWidget")); layoutWidget->setGeometry(QRect(10, 10, 331, 51)); horizontalLayout = new QHBoxLayout(layoutWidget); horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); horizontalLayout->setContentsMargins(0, 0, 0, 0); verticalLayout = new QVBoxLayout(); verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); label = new QLabel(layoutWidget); label->setObjectName(QString::fromUtf8("label")); verticalLayout->addWidget(label); label_2 = new QLabel(layoutWidget); label_2->setObjectName(QString::fromUtf8("label_2")); verticalLayout->addWidget(label_2); horizontalLayout->addLayout(verticalLayout); verticalLayout_2 = new QVBoxLayout(); verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); nameEdit = new QLineEdit(layoutWidget); nameEdit->setObjectName(QString::fromUtf8("nameEdit")); verticalLayout_2->addWidget(nameEdit); numberEdit = new QLineEdit(layoutWidget); numberEdit->setObjectName(QString::fromUtf8("numberEdit")); verticalLayout_2->addWidget(numberEdit); horizontalLayout->addLayout(verticalLayout_2); QWidget::setTabOrder(nameEdit, numberEdit); QWidget::setTabOrder(numberEdit, buttonBox); retranslateUi(Dialog); QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept())); QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject())); QMetaObject::connectSlotsByName(Dialog); } // setupUi void retranslateUi(QDialog *Dialog) { Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8)); label->setText(QApplication::translate("Dialog", "Name:", 0, QApplication::UnicodeUTF8)); label_2->setText(QApplication::translate("Dialog", "Number:", 0, QApplication::UnicodeUTF8)); } // retranslateUi }; namespace Ui { class EditDialog: public Ui_EditDialog {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_EDITDIALOG_H
现在编译运行就可以了
注意ui_editdialog.h有时候打不开,需要先编译一下,有错误没关系然后就可以打开了
相关文章推荐
- 4.4 通过命令行方式创建一个Qt4程序
- VS2013如何创建一个Qt程序
- Qt简单窗体程序全界面创建过程
- <WinForm系列> 1 . 我们如何创建一个WinForm的界面程序?
- 创建一个swift界面程序【一】
- 创建一个swift界面程序【二】
- QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
- Android学习笔记:创建一个简单的双界面程序
- Qt+Caffe+OpenCV——【一个基于VGG网络的人脸识别考勤系统】(二)创建一个登录界面和主窗口
- Linux下如何利用QtCreator下创建一个界面程序
- 我的WCF之旅(1):创建一个简单的WCF程序
- 创建一个既可作为普通exe(双击能运行),又可作为服务运行的程序。
- Electron 从零创建一个 Windows/OS X/Linux 桌面可执行程序
- adb shell命令--命令创建模拟器并启动,命令打开手机程序的界面
- 一个简单的Qt socket 程序
- .net WinForm程序中调用Visual Studio IDE 中数据连接配置界面 (一个DLL搞定)
- 创建一个简单的WCF程序(转载)
- 设置使mini2440开机运行自编的qt图形界面程序