什么?你还不知道C++能快速开发部署GUI?...
什么?你不知道Qt是什么...
这篇文章,教你怎么用Qt Creator2.0来做一个GUI。下载地址什么的不罗嗦,google之。我这里给出的,是每个QT GUI 工程用QT creator来做时的流程。
假设你已经安装好了qt sdk。
1.文件->新建工程或文件。
2.选择Qt控件项目->QT GUI应用。
3.取消 “隐藏生成的文件选项”
4.布局ui文件(这步的详细操作略去,很多书都会说这个,我只说书上说得不清楚的)
5.编译该ui文件,这时,会出现一个ui_xxx.h的文件。
接下来,就是代码修改了。这里分别给出原始文件和修改后的文件内容。代码注释在修改后的文件上。
以建立一个叫test的工程为例,修改后的工程,可以执行对话框的功能。
一、首先修改test.h
test.h未修改前代码:(需要说明的是,我的修改前代码和你的可能不同,不过没影响)
#ifndef TEST_H
#define TEST_H
#include <QMainWindow>
namespace Ui {
class test;
}
class test : public QMainWindow
{
Q_OBJECT
public:
explicit test(QWidget *parent = 0);
~test();
private:
Ui::test *ui;
};
#endif // TEST_H
修改后的test.h代码
#ifndef TEST_H
#define TEST_H
#include <QDialog> //因为要继承QDialog
#include "ui_test.h" //引用了ui_test.h,ui_test.h文件不能做任何更改,即使做了更改,在再次编译test.ui的时候,这些更改都会消失
class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
//这里声明的class名,惯例是使用Ui后面的名字
//为什么要继承QDialog?因为ui_test.h中定义的Ui::GoToCellDialog函数,没有完全继承QDialog的特性,接下来的操作中,还有可能用到
{
Q_OBJECT//如果有声明signals, slots,则必须写这一句,这样qt的编译器才能识别下面的这些生命
public:
explicit GoToCellDialog(QWidget *parent = 0);//典型的窗口部件类定义中的构造函数,注意定义方式,没有必要关联基类
//QWidget * parent参数用于说明谁是其父窗口部件,该参数的默认值是一个空指针,意味着该对话框没有父对象
~GoToCellDialog();//析构函数,可选,如果在这里声明,就必须实现
private slots:
void on_lineEdit_textChanged();//注意这种slots的函数名书写方式
//创建用户接口后,setupUi函数会自动将那些符合on_objectName_signalName()的任意slot与相应的objectName的signalName()连接
//这里,就意味着,如果实现用户接口,就会自动运行如下代码
//connect(lineEdit, SIGNAL(testChanged(const QString &)), this, SLOT(on_lineEdit_textChanged()));
};
#endif // TEST_H
这里的操作很简单:
1.删除关于namespace的声明代码段,因为已经在ui_test.h中有了声明
2.添加slot或者任何你想添加的函数
二、接下来修改test.cpp代码
test.cpp未修改前代码
#include "test.h"
#include "ui_test.h"
test::test(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::test)
{
ui->setupUi(this);
}
test::~test()
{
delete ui;
}
这里的操作:
1.删除 "ui_test.h"的引用,因为在test.h中已经完成了
2. 增加#include <QtGui>的引用
3.构造函数的实现,函数名不用更改
4.ui->setupUi(this);改成setupUi(this);
5.做connect操作
6.实现slot函数和任何在test.h中声明的函数
7.实现析构函数,析构函数已经存在了,把里面那句话删掉,因为ui已经不存在了撒~
test.cpp修改后代码
#include <QtGui>
#include "test.h"
//现在开始实现test.h,这里,test.h中的类已经是通过继承的类了。注意这个文件include的文件
GoToCellDialog::GoToCellDialog(QWidget *parent) :
QDialog(parent)//注意实现方式,parent参数传递给了基类构造函数,
{
//子类的构造函数,可以看出,GUI程序的界面设计和功能实现,都是在构造函数中完成的。
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()));
//accept(),reject()槽都是QDialog的槽,这两个槽都可以关闭对话框,并且会设置对话框的值
//QDialog::Accepted, QDialog::Rejected
}
void GoToCellDialog::on_lineEdit_textChanged()
{
okButton->setEnabled(lineEdit->hasAcceptableInput());
}
GoToCellDialog::~GoToCellDialog()
{
//todo
}
三、修改main.cpp代码
main.cpp修改前代码
#include <QtGui/QApplication>
#include "test.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
test w;
w.show();
return a.exec();
}
这里
1.删除对<QtGui>的引用,因为用不到
2.实现一个类,然后show它
main.cpp修改后代码
#include <QApplication>
#include "test.h"
//这里没啥好解释的...
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GoToCellDialog *dialog = new GoToCellDialog;//看下这个继承类的构造函数,注意这里采用默认参数0,即没有父类
dialog->show();
return a.exec();
}
然后编译运行,搞定。
可以说,基本上每个QT GUI工程都是按照这个来做的。修改后的代码执行一个对话框的功能。
分享到:
相关推荐
**C++ GUI Qt4编程源码详解** C++ GUI Qt4编程是一门深入学习Qt库进行图形用户界面(GUI)开发的重要课程。...通过逐个分析和运行源码,你将逐步掌握Qt4的精髓,为开发出高质量的跨平台GUI应用打下坚实基础。
Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API和工具,使得开发者能够创建出美观且功能强大的GUI应用。在本实例中,我们将深入探讨如何使用Qt4进行GUI编程,通过提供的源代码文件来学习各个...
C++作为一种强大的编程语言,结合Qt库,可以创建功能丰富的、具有现代化UI的跨平台应用程序。《C++ GUI Qt4第二版》是一本专门介绍如何使用C++和Qt4库构建GUI应用的书籍,其提供的源代码是学习和理解Qt4编程的关键...
- **目的**: Qt 是一套跨平台的应用程序框架,用于开发图形用户界面(GUI)应用。 **1.4 安装 Qt Eclipse Integration** - **下载地址**: Qt 官方网站 (http://qt.nokia.com) - **文件**: qt-eclipse-integration-...
QT4是Qt库的一个版本,它是C++编程中用于创建图形用户界面(GUI)和跨平台应用程序的一个强大框架。QT4编程涵盖了从基础概念到...通过学习,你可以掌握构建跨平台GUI应用的基本技能,为进一步的开发工作打下坚实基础。
Qt框架是Nokia公司开发的一个跨平台的应用程序和用户界面框架,用C++编写。它提供了一系列库,用于处理各种常见的任务,如图形渲染、网络通信、文件访问和数据库交互等。Qt的另一特点是它使用了信号与槽机制来处理...
Qt 是一个著名的跨平台GUI框架,广泛应用于桌面和嵌入式系统。它不仅提供了一套丰富的GUI组件,还支持多种网络协议和数据库访问接口。Qt的最大优点之一是其高度的可定制性,开发者可以根据自己的需求来调整GUI的外观...
首先,QT库是一个跨平台的开发框架,它为开发者提供了丰富的API,可以方便地构建GUI应用。QT库支持多种操作系统,包括Windows、Linux和macOS等。C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持面向...
Qt是一个跨平台的开发框架,由Qt公司(原名 Trolltech)开发,它提供了丰富的库和工具,使得开发者可以使用C++轻松构建图形用户界面(GUI)应用,支持Windows、Linux、macOS等多种操作系统。 本项目“C++ Qt 学生...
### C++ GUI编程与Qt框架详解 #### 一、引言 随着计算机技术的发展,图形用户界面(Graphical User Interface, GUI)已经成为软件开发不可或缺的一部分。Qt作为一款强大的跨平台应用程序开发框架,在C++社区内备受...
它提供了一套丰富的库和工具,使得开发者能快速构建美观、跨平台的GUI应用。在本项目中,QT库被用来设计和实现图书管理系统的用户界面,包括图书查询、借阅、归还、统计等功能的交互界面,用户可以通过直观的按钮、...
Qt4 提供了一整套工具包,包括窗口小部件、图形绘制、网络通信、数据库接口、XML 支持等,使得开发者能够快速地创建跨平台的 GUI 应用。它基于 C++,同时提供了一种称为“信号与槽”的事件处理机制,简化了对象间的...
Qt库,由Qt公司开发,是一个跨平台的应用程序开发框架,广泛应用于桌面、移动以及嵌入式设备。它提供了丰富的API,覆盖了GUI设计、网络通信、数据库访问、多线程等众多功能。Qt使用信号与槽机制进行事件处理,这是一...
在计算机科学领域,图形用户界面(GUI)的开发是一项重要的技能,而Qt库则是一个强大的跨平台开发工具,广泛应用于桌面应用、移动应用及嵌入式系统的开发。本项目——"基于C++、Qt实现底层绘图算法的绘图系统",旨在...
在"sscom-master.zip"项目中,C++与QT的结合,使串口助手具备了高性能和跨平台的特性,可以在多种操作系统上运行。 "sscom-master"这个文件名可能是项目的主分支或版本标识。打开压缩包,我们看到的是整个项目的源...
QT调用Visual Studio生成的C++库是一种常见的跨平台开发技术,这允许开发者利用QT的图形用户界面(GUI)框架和Visual Studio强大的编译及调试功能。本项目提供了详细的步骤和示例,使得QT能够有效地集成和使用由VS...
在编程领域,Qt是一个强大的跨平台应用程序开发框架,由C++编写,广泛应用于GUI(图形用户界面)程序的开发。本项目名为"qt写的俄罗斯方块完整代码",它是一个使用Qt库实现的经典俄罗斯方块游戏。通过这个项目,我们...
其次,QT库是跨平台的应用程序开发框架,由Qt Company提供,广泛用于GUI应用程序的开发,但同样适用于非图形化的控制台应用。QT库包含丰富的类和功能,如图形视图、网络通信、数据库支持等,极大地简化了C++开发过程...