QT如何将.UI文件转成.h或.cpp文件

合集下载

qt windows 源码编译

qt windows 源码编译

qt windows 源码编译Qt是一个跨平台的C++应用程序开发框架,它可以用于开发Windows操作系统的应用程序。

本文将介绍如何使用Qt框架编译Windows源码。

要编译Qt框架的Windows源码,需要准备一些必要的工具和环境。

安装完成后,打开Visual Studio,创建一个新的空项目。

在项目属性中,设置项目的平台为Windows,并选择合适的编译器版本。

然后,将Qt源码包解压到项目的文件夹中。

接下来,打开Qt源码文件夹中的配置文件,找到一个名为“configure”的批处理文件,并运行它。

该批处理文件将自动配置Qt的编译选项。

在运行过程中,可以选择需要编译的模块和功能。

配置完成后,打开Visual Studio的命令提示符,进入到Qt源码文件夹中。

运行以下命令来生成Makefile文件:qmake -tp vc然后,运行以下命令来编译Qt源码:nmake编译过程可能需要一些时间,取决于电脑的性能和编译选项的设置。

完成后,将生成Qt框架的库文件和头文件。

接下来,可以在自己的项目中使用编译好的Qt框架。

首先,打开自己的项目并在项目属性中设置正确的Qt库和头文件的路径。

然后,在项目中包含Qt头文件,并链接Qt库文件。

在代码中,可以使用Qt提供的类和函数来开发Windows应用程序。

Qt提供了丰富的功能和工具,可以方便地创建图形界面、处理用户输入、进行文件操作等等。

编写完成后,使用Visual Studio来编译和运行自己的应用程序。

如果一切顺利,应该可以看到自己的应用程序在Windows上正常运行。

使用Qt框架编译Windows源码是一项相对复杂的任务,但只要按照上述步骤进行操作,就能够成功地编译出自己的应用程序。

Qt框架提供了丰富的功能和工具,可以极大地简化开发过程,提高开发效率。

希望本文能够对读者有所帮助。

Ubuntu下嵌入式Qt开发环境配置全攻略

Ubuntu下嵌入式Qt开发环境配置全攻略

Ubuntu下嵌入式Qt开发环境配置全攻略本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程。

本文中介绍的工具、大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧的Fedora 9.0,在ubuntu中配置过程已需要修正。

一、背景众所周知Qt是一个跨平台的开发工具,与本文相关的分支有3个,分别是Linux下的Qt桌面版(基于X Window),嵌入式桌面环境Qtopia(Qt Extended)和嵌入式基础类库Qt Embedded。

嵌入式桌面版拥有集成开发工具Qt Creator,方便进行Qt 程序的设计,默认配置用于开发桌面程序,进行交叉编译设置(有时间待后文详述)后,可以直接编译嵌入式程序。

Qt Embedded也称Qt/E,是运行于嵌入式Linux的Qt基础类库,目前最高版本为4.8(不确定)。

它的图形界面直接工作于Frame Buffer 上,绕过了窗口管理系统,具有较高的效率,适于嵌入式环境。

Qtopia是一个嵌入式桌面环境,以Qt Embedded(在某些版本中称Qtopia Core)为基础,在后期改名为Qt Extended。

它提拥有一个桌面,并供了手机/PDA中常用的基本功能软件(如电话本等等),在4.4.3后官方停止开发(或改由开源社区维护)。

不同的开发目标应当选择不同的开发工具和环境,如果读者不开发桌面程序,也不需要Qt Creator(自己写makefile),可以不用安装桌面版,但装上对后续配置还是有一定方便作用的。

对嵌入式开发者来说,如果仅仅开发单独的图形界面程序,不需要嵌入式桌面的话,只使用Qt/E即可,没必要使用过时的Qtopia。

友善之臂开发板默认的Qtopia环境是2.2,已经与4.x的Qt/E库不兼容,除了演示自带程序外,对开发而言几乎不堪用。

开发板还提供了Qt Extended 4.4.3,但这个环境提供的是一个诺基亚功能机的界面,基本上也只能供学习研究使用了。

QT中文文件

QT中文文件

oct设置QTextStream来读/写八进制数字
dec设置QTextStream来读/写十进制数字
hex设置QTextStream来读/写十六进制数字
endl强制换行
flush强制QIODevice刷新任何被缓存的数据
ws作为任何可用的控制符(在输入的时候)
reset重新设置QTextStream为它的缺省模式(请见reset())
for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it )
stream << *it << "\n";
fi
line = codec->fromUnicode(floStream.readLine());
qWarning(line);
}
file.close();
}
return 0;
}
代码中的主要改动就是黄底的部分
意思就是创立一个中文GBK编码样式,然后按照这种方式来把读入的文件流进行重新编码,这样中文就可以顺利输出了,不信你可以试一试
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
补上这两句就可以了显示中文了
#include <qtextcodec.h>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")) ;

Qt中.pro文件命令介绍和写法

Qt中.pro文件命令介绍和写法

【命令介绍】第一种常用方式:#模块设置,一般设置为app(生成应用程序,默认),subdirs(生成makefile文件编译subdirs指定的子文件夹),lib(生成库文件)TEMPLATE = app#指定生成的应用程序放置的目录DESTDIR += ../bin#指定生成的应用程序名TARGET = pksystem#添加或减少CONFIG的配置模块,一般采用默认即可,但是除去debug_and_release模块不会生成debug和release文件夹#CONFIG += releaseCONFIG -= debug_and_release#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录UI_DIR = ./temp#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录RCC_DIR = ./temp#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录MOC_DIR = ./temp#指定目标文件的存放目录OBJECTS_DIR = ./temp#程序编译时依赖的相关路径DEPENDPATH += . forms include qrc sources#头文件包含路径INCLUDEPATH += .#qmake时产生的信息,$${a}读取变量a的字符串,$$(PATH)读取环境变量PATH #message($$(PATH))#源文件编码方式CODECFORSRC = GBK# Input#工程中包含的头文件HEADERS += include/painter.h#工程中包含的.ui设计文件FORMS += forms/painter.ui#工程中包含的源文件SOURCES += sources/main.cpp sources/painter.cpp#工程中包含的资源文件RESOURCES += qrc/painter.qrc第二种常用方式,用于子文件夹的编译:#设定模块为子文件夹编译方式TEMPLATE = subdirs#子文件夹目录,可用\换行SUBDIRS = src1 \src2【写法】在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:1. 注释从“#”开始,到这一行结束。

从.ui到.h文件的生成

从.ui到.h文件的生成

当装完了在vs下编译好了的Qt和Qt Visual Studio Add-in后,我们就可以用VS来进行Qt 方面的开发了。

在VS下新建一个Qt工程,选择Qt Application项,如下图所示:输入项目名称和确定项目目录(注意Qt相关的项目目录中不能包含中文文字),此处我用的项目名是first_experience直接点击finish,采用默认配置。

双击打开first_experience.ui文件,随便拖几个图标什么的做个界面,反正我们只是用来显示界面而已,不实现其他功能。

我随便弄了个界面如下所示:下面我们就用4种方法实现当程序运行时显示上面界面的功能。

法1:vs默认方法main函数的代码为:#include <QtGui/QApplication>#include "first_experience.h"int main( int argc, char *argv[] ){QApplication app( argc, argv );first_experience first;first.show();return app.exec();}其中first_experience是一个类,该QMainWindow类派生而来,且与界面文件自动生成.h和.cpp文件相关。

我们只需用该类建立一个对象,然后调用其显示功能即可。

法2:直接使用法:由下面的项目文件目录可以看出first_experience.ui文件的功能其实是在ui_first_experience.h文件中,所以我们可以直接使用Ui_first_experienceClass这个类,并调用其setupUi函数来将界面加载到窗口中。

项目文件目录图:此时main函数的代码如下:#include <QtGui/QApplication>#include <QtGui/QMainWindow>#include "first_experience.h"int main( int argc, char *argv[] ){QApplication app( argc, argv );QMainWindow main_window;Ui_first_experienceClass first;first.setupUi( &main_window );main_window.show();return app.exec();}法3:单一继承法:该方法和VS自带的方法(即法1)类似,即自己封装一个类,把与界面相关的类Ui_first_experienceClass中的函数包含进来。

qt编译c语言

qt编译c语言

QT编译C语言一、概述编写C语言程序是开发软件的基础,而QT是一个跨平台的应用程序开发框架,它提供了丰富的工具和功能,可以帮助开发者轻松地编写和编译C语言程序。

本文将介绍如何使用QT进行C语言的编译,并提供一些实用的技巧和注意事项。

二、QT的安装和配置在开始编译C语言之前,我们需要先安装和配置QT开发环境。

以下是安装和配置QT的步骤:1.下载QT:首先,我们需要从QT官方网站上下载适用于您的操作系统的QT安装包。

在下载过程中,请确保选择与您的操作系统和版本相匹配的安装包。

2.安装QT:下载完成后,双击安装包并按照提示进行安装。

在安装过程中,您可以选择安装的组件和目标文件夹。

建议选择默认选项,以确保安装的完整性。

3.配置QT:安装完成后,打开QT Creator(QT的集成开发环境)并进行一些必要的配置。

首先,选择“工具”菜单下的“选项”选项。

在“构建和运行”选项中,选择您想要使用的编译器(如GCC)并配置相应的路径。

三、创建C语言项目在QT中创建C语言项目非常简单。

按照以下步骤操作:1.打开QT Creator:双击桌面上的QT Creator图标或通过开始菜单打开。

2.创建新项目:选择“文件”菜单下的“新建文件或项目”。

在弹出的对话框中,选择“非QT项目”并选择“C++项目”。

3.配置项目:在配置项目的对话框中,选择“纯C项目”并输入项目的名称和路径。

点击“下一步”并按照提示完成项目的配置。

4.编写C代码:在项目创建完成后,可以在QT Creator中编写C语言代码。

右键单击项目文件夹,并选择“新建文件”。

选择“C源文件”并输入文件名。

然后,您可以在新建的文件中编写C语言代码。

四、编译C语言项目编写完C语言代码后,我们需要将其编译成可执行文件。

在QT中,编译C语言项目也非常简单。

按照以下步骤进行操作:1.打开QT Creator:如果您尚未打开QT Creator,请按照第三节中的步骤打开。

2.打开项目:选择“文件”菜单下的“打开文件或项目”。

qt 编程经验总结

qt 编程经验总结

数据模型更改时,QlistView如何相应的刷新 (3)QlistView 控件如何关联数据模型 (3)QT中QstringList的清空 (4)QT中的pro文件的编写 (4)QProgressDialog的使用方法 (10)如何添加自定义的slot 函数。

(11)Qt标准对话框之QMessageBox (12)Qt 中如何使用外部链接库 (16)如何将qte 默认的绿色背景设置为透明 (16)布局的时候设置左,上,右,下的距离 (16)如何加载图片 (17)在Qt4中如何为对话框设置背景? (17)使用qmake工具构建QT应用程序(指定编绎生成的moc文件目录)moc命令:用于处理含Q_OBJECT语句(即用到时了信号和槽)的QT类定义头文件(或源文件),以产生出包含QT元对象代码的标准头文件,这样经过处理后的头文件才能在源文件中使用。

注意若用qmake工具来构建QT程序,可以设置规则来自动运行moc,无需我们直接运行moc来处理头文件qmake是一个跨平台的程序,使用qmake来构建QT应用程序的步骤:qmake -project:收集项目信息,比如源文件、头文件、目标二进制文件、库位置等,生成一个跨平台的.pro项目文件(也可自己编写),这个文件用来生成Makefile文件qmake(-makefile):根据.pro文件生成Makefile文件。

接下来就可以运行make 工具来编译项目了.pro文件的格式:TEMPLATE=app:指定模板变量,表示生成的Makefile类型。

app(为默认值)建立应用程序的makefile;lib建立库的makefile;vcapp建立应用程序的VisualStudio项目文件;vclib建立库的Visual Studio项目文件;subdirs创建子目录编译方式的makefileSUBDIRS=src1:指定子目录TARGET=filename:指定生成的应用程序名(默认为项目名)DEPENDPATH+=.:指定程序编译时依赖的相关路径(+=表示追加,=则表示直接指定,下面类同)INCLUDEPATH+=.:指定头文件包含路径DESTDIR+=bin:指定应用程序放置的目录UI_DIR+=form:指定ui界面文件生成的头文件存放目录(ui文件会由uic命令处理并生成ui_*.h头文件)RCC_DIR+=qrc:指定qrc资源文件生成的头文件存放目录(rcc命令会将.qrc 文件转换成qrc_*.h文件)MOC_DIR+=moc:指定moc生成的头文件存放目录(moc命令将含Q_OBJECT的头文件转换成标准.h文件)OBJECTS_DIR+=obj:指定目标文件存放的目录CONFIG+=qt warn_on release:指定编译配置信息,如qt表示用QT库来编译,warn_on把编译器设为输出警告信息,release编译为发布程序,还有debug、debug_and_release等message($$(PATH)):用于qmake构建时产生消息。

qt creator实战教程

qt creator实战教程

qt creator实战教程c一、Qt Creator 的安装和hello world 程序的编写(原创)1.首先到Qt 的官方网站上下载Qt Creator,这里我们下载windows 版的。

下载地址:/downloads如下图我们下载:Download Qt SDK for Windows* (178Mb)下载完成后,直接安装即可,安装过程中按默认设置即可。

2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示程序。

3.我们用File->New 菜单来新建工程。

4.这里我们选择Qt4 Gui Application。

5.下面输入工程名和要保存到的文件夹路径。

我们这里的工程名为helloworld。

6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。

7.我们将base class 选为QDialog 对话框类。

然后点击Next。

8.点击Finish,完成工程的建立。

9.我们可以看见工程中的所有文件都出现在列表中了。

我们可以直接按下下面的绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。

10.程序运行会出现空白的对话框,如下图。

11.我们双击文件列表的dialog.ui 文件,便出现了下面所示的图形界面编辑界面。

12.我们在右边的器件栏里找到Label 标签器件13.按着鼠标左键将其拖到设计窗口上,如下图。

14.我们双击它,并将其内容改为helloworld。

15.我们在右下角的属性栏里将字体大小由9 改为15。

16.我们拖动标签一角的蓝点,将全部文字显示出来。

17.再次按下运行按钮,便会出现helloworld。

到这里helloworld 程序便完成了。

Qt Creator 编译的程序,在其工程文件夹下会有一个debug文件夹,其中有程序的.exe 可执行文件。

但Qt Creator 默认是用动态链接的,就是可执行程序在运行时需要相应的.dll 文件。

c++ gui qt4 编程 代码

c++ gui qt4 编程 代码

C++ GUI编程是一种广泛应用的编程技术,它允许开发者创建具有图形用户界面的应用程序。

而Qt4是一种流行的C++ GUI编程框架,它为开发者提供了丰富的工具和库来简化GUI应用程序开发过程。

本文将详细介绍使用Qt4进行C++ GUI编程的技术和方法。

一、Qt4简介Qt4是一种跨评台的C++应用程序开发框架,它由Qt公司开发并于2009年发布。

Qt4提供了丰富的工具和库,使得开发者能够轻松地创建具有各种复杂功能和特性的GUI应用程序。

Qt4的主要特点包括:1. 跨评台性:Qt4支持跨多种操作系统和评台(如Windows、Linux、Mac等)运行,使得开发者能够编写一份代码,在多个评台上运行;2. 丰富的组件和工具:Qt4提供了丰富的组件和工具,如窗口部件、布局管理器、绘图引擎等,使得开发者能够快速构建功能丰富的GUI应用程序;3. 易用性:Qt4的API设计简洁、清晰,具有良好的可读性和易用性,使得开发者能够快速上手并提高开发效率。

二、Qt4 GUI编程基础在使用Qt4进行GUI编程之前,首先需要安装Qt4开发环境,并熟悉Qt4的基本概念和使用方法。

以下是Qt4 GUI编程的基础知识:1. 信号与槽机制:Qt4使用信号与槽机制来处理事件和消息传递,开发者可以通过连接信号与槽来实现组件之间的消息传递和交互;2. 布局管理器:Qt4提供了丰富的布局管理器,如水平布局、垂直布局、表格布局等,使得开发者能够灵活地设计和管理GUI界面;3. 绘图引擎:Qt4的绘图引擎提供了丰富的绘图功能,如绘制图形、文字、图像等,开发者可以利用绘图引擎创建各种自定义的图形界面;4. 窗口部件:Qt4提供了丰富的窗口部件,如按钮、文本框、标签、菜单等,开发者可以使用这些窗口部件来创建各种功能丰富的GUI界面;5. 事件处理:Qt4提供了丰富的事件处理机制,开发者可以通过重写事件处理函数来处理各种用户交互事件。

三、Qt4 GUI编程实例下面通过一个简单的实例来演示如何使用Qt4进行GUI编程。

qt实验报告

qt实验报告

嵌入式系统界面设计实验实验题目:基于Qt的图片表格转换学院: **学院专业:电子信息工程班级:学号:姓名:小组成员:编写日期: 2019.10目录1. 实验设计背景 (1)2. 实验设计目的 (1)3. 实验设计环境 (1)4. 实验系统需求分析 (1)4.1 系统调查 (1)4.2 用户需求 (2)4.3 可行性分析 (2)4.4 系统业务流程图 (3)5. 实验具体操作步骤及方法 (3)5.1 程序运行开始主界面 (3)5.2 用户修改界面 (4)5.3 最终生成表格 (4)6. 实验结果分析 (5)7. 实验效果图 (6)8. 实验设计具体任务分工 (6)9. 实验设计心得体会 (6)1.实验设计背景当今办公室中有不少的表格是基于图片的这给后期人员的校对处理带来了不少的麻烦,特别是列数较多行数较多的表格。

在将表通过人工的方法转换为Excel 表格时容易出现差错,表格行列错位、数据抄错等等问题。

长时间的工作还容易损害校对人员的健康。

2.实验设计目的1.将表格分解成小片,以便于人工填写2.尽可能的通过软件将图片数字转换为文字3.Excel表格导出3.实验设计环境Visual Studio CodePython 3.7Python包:Pytesseract、openpyxl、numpy、cv2Qt CreaterTesseract-OCR4.实验系统需求分析4.1系统调查在许多小公司的办公中,由于大多业务系统都是使用的通用的模板,没有对具体情形进行优化,以及以前未使用办公系统的历史遗留问题,在实际的办公中经常会出现大量图像表格,需要人为地输入到EXCEL表格中以用于后续公司的各项统计工作4.2用户需求将PNG、JPG、BMP等格式的图片表格转化为EXCEL 的数字表格方便后续的统计工作4.3可行性分析Python中中存在大量的用于图像处理的库opencv等可以方便地对图像表格进行处理分割成小块。

QT关于控件的教程

QT关于控件的教程

使用Linux纯属为了想了解UNIX下DB2运行和使用情况,而一直喜欢用的FreeBSD上好像不支持DB2数据库,反正我没有看到这方面资料。

如果有谁知道的话请你告诉我。

我的爱机配置较低,在Freebsd上使用GNOME作为X-Windws有点钝,KDE也就一直都没有尝试过。

在安装Linux时,忽然有想看看KDE 的念头,于是一古脑全装上了,第一次用时觉得用KDE感觉也不满意,于是将KDE改为UNIX风格,没想到重新启动X- Windws后,速度一下快了起来,终于让我觉得可以顺利的工作了。

最近在学习Python编程,想看看在Linux工作下怎样,而无意发现了QT Designer ,再仔细一看竟然使用的是C++。

让我大为兴奋,C++再熟悉不过了,于是照着英文说明操练了一会,挺顺手的的,于是试着写了一代码,最后就是不会编译。

我的英语水平也有限,忙了半天了也有点累了。

今天在网上查了一些资料,终于对QT Designer 有些了解。

下面是我在网上看到的一篇文章,先收集以后再说吧。

1. 什麽是QT.用Linux 的人,一定都知道QT 是什麽.而利用QT 编译出来的KDE 桌面系统,更是让Linux 有了一次能和Windows 的GUI 相媲美的机会.甚至有人说, KDE的桌面在图形上,还胜过了Windows95 了.那麽QT 到底是什麽呢?其实QT就是基於C++ 语言上的一种专门用来开发GUI 介面的程式.这里面包括了∶button; label; frame ... 等等很多的可以直接调用的东西.2. 为什麽选择QT2.1 QT 是基於C++ 的一种语言相信C/C++ 目前还是一种很多人都在学习的语言. QT 的好处就在於QT 本身可以被称作是一种C++ 的延伸. QT 中有数百个class 都是用C++ 写出来的.这也就是说, QT 本身就具备了C++ 的快速、简易、Object-Oriented Programming(OOP)等等无数的优点.2.2 QT 具有非常好的可移植性(Portable)QT 不只是可以在Linux 中运作.也同样可以运行在Microsoft Windows 中.这也就意味者,利用QT 编写出来的程式,在几乎不用修改的情况下,就可以同时在Linux中和Microsoft Windows 中运行. QT 的应用非常之广泛,从Linux 到Windows 从x86 到Embedded 都有QT 的影子.3. 什麽是QT Designer简单的来说QT Designer 是一个GUI 的工具. 这个工具可以帮助我们来加快写QT程式的速度. 利用QT Designer 可以用一种所见既所得的方式,来产生QT 程式的GUI 介面的程式码. 通过增加一些功能,就可以完成一个程式了.利用QT Designer可以非常快速的学会QT, 而我们这里说利用QT Designer 来学习QT 而不是利用QT Designer 来写QT, 这里的区别就在於, QT Designer 所产生的程式码有些繁琐.跑起来也比较的慢些.我们这里只是利用QT Designer 来帮助我们学习.而不是直接去跑QT Designer 生成的程式码.3. 基本要求因为这篇文章主要是告诉大家如何利用QT Design 来达到快速学习QT 的.所以您最也要做到∶您需要有一台可以跑Linux 的电脑或者Microsoft Windows 的电脑足够的RAM 和HardDisk 用以安装、编译QT您的Linux 中需要安装有KDE、QT、QT Designer、g++ 等等程式.您如果适用Microsoft Windows, 则您需要VC++ 和QT For WindowsLinux 的使用者最好还能安装一个Kdevelop(一个非常好的用来开发QT 的Develop Enverment)4. QT Designer简单的介绍--从PushButton 开始假设您一切都安装好了.现在我们打开QT Designer 吧. 打开後,选择New -> Dialog这时侯,您的QT Designer 中就会出现一个From1 来. 现在我们click 一下上面的tools 中的那个pushbutton, (标有OK 的图标)并且用mouse 选择到一定的大小. 在这个pushbutton上面用您的mouse double click 一下. 我们就可以改变pushbutton 的label 了. 这里我们把pushbutton1 这几个字,换成Exit, 然後直接按Enter 或者用mouse 选择OK 也可以. 现在我们看到, 那个button 中的标签已将变成Exit 了. 我们这时侯还需要给这个Exit Button 一个signal(信号), 这样当您在Exit 这个Button 上click 的时侯. QT 才知道如何去处理这个信号. 我们按一下F3(connect singnal slot)然後在那个Exit Button 上面Click 一下. 这时侯我们就看到了Edit Connection 的Dialog 了. 在Signal 中选择clicked, 在slot 中,先选择setFocus() 就好了. 这时侯选择OK. 我们就算是完成了. 如果想看看这个小程式长什麽样子.可以用CTRL+T来看PreView. (see figure 1)figure 1首先在您的$HOME 中建立一个qt_program 的Directory 出来. 这个Directory 将会作为我们存放文件的地方. 现在我们用File -> Save 把这个文件存为form1.ui 放在$HOME/qt_program 的目录下.现在如果大家打开form1.ui 来看一看. 会发现那是一堆有很多的东西.所以我们需要用一个叫做uic 的程式来把.ui 文件转换成QT 可以使用的.cpp 和.h 文件.用下面的指令就可以生成我们需要的.h 文件了uic -o form1.h form1.ui而生成.cpp 文件则需要用以下的指令∶uic -i form1.h -o form1.cpp form1.ui这时侯,form1.h中就会看到一个标准的QT 需要的.h 文件1. #ifndef FORM1_H2. #define FORM1_H3. #include4. #include5. class QVBoxLayout;6. class QHBoxLayout;7. class QGridLayout;8. class QPushButton;9. class Form1 : public QDialog10. {11. Q_OBJECT12. public:13. Form1( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );14. ~Form1();15. QPushButton* PushButton1;16. };17. #endif // FORM1_H1-2: 定义FORM1.H 这个文件3-4: 这里是我们需要用到的两个.h 文件5-7: 我们根本用不到, qt designer 自己产生的8: QPushButton 需要用到这个class9-11: 我们的form1 是based 在QDialog 上面的12: 公开的(可以在以後的程式中使用.用过C++ 的人一定明白)13: Form1的架构14: 清除Form115: 产生一个pushbutton (就是那个标有exit 的按钮17: 结束对FORM1.H 的定义而form1.cpp 文件如下:1. #include "form1.h"2. #include3. #include4. #include5. #include6. #include7. /*8. * Constructs a Form1 which is a child of 'parent', with the9. * name 'name' and widget flags set to 'f'10. *11. * The dialog will by default be modeless, unless you set 'modal' to12. * TRUE to construct a modal dialog.13. */14. Form1::Form1( QWidget* parent, const char* name, bool modal, WFlags fl )15. : QDialog( parent, name, modal, fl )16. {17. if ( !name )18. setName( "Form1" );19. resize( 596, 480 );20. setCaption( tr( "Form1" ) );21. PushButton1 = new QPushButton( this, "PushButton1" );22. PushButton1->setGeometry( QRect( 130, 160, 161, 71 ) );23. PushButton1->setText( tr( "Exit" ) );24. // signals and slots connections25. connect( PushButton1, SIGNAL( clicked() ), PushButton1, SLOT( setFocus() ) );26. }27. /*28. * Destroys the object and frees any allocated resources29. */30. Form1::~Form1()31. {32. // no need to delete child widgets, Qt does it all for us33. }1: 我们上面的定义文件2: pushbutton所需要的.h 文件3-6: 我们根本用不到, qt designer 自己产生的7-13: QT Designer 产生的注解14-15: Form1 的结构17-18: 如果Form1:Form1中没有pass 一个名子过来.那麽就命名为Form119: resize20: 把显示出来的那个Dialog 的名子定为Form1, 也就是window 中左上角的字21: 做出一个新的button,名子为PushButton122: 这里设定了pushbutton 在这个dialog 中的位置. Qrect(130, 160, 161, 71) 这里是说在一个Dialog中,以左边最上面来算,位置是(0,0), 所以说,这里的130(横向)和160 (纵向)就是说我们从(0,0)开始,往左边跑130,往下跑160.这样我们就算出了pushbutton这个按钮画在那里了.後面的161, 71则是定义这个pushbutton到底要画多大,设定了长和高23: 通过呼叫setText指令,我们可以在这个button上面给入我们需要的文字.这里是Exit24: QT Designer 产生的注解25: 上面就是处理当接收到clicked 的信号(singal)以後,我们所作的事情(setFocus on PushButton1) connect 这里是告诉程式连接一个信号,PushButton1, SIGNAL(clicked()),是说信号是由PushButton1 发出, 发出的信号为mouse clicked,PushButton1, SLOT(setFocus())表示信号发出以後,目标(Object)为PushButton, event 是setFocus() 动作26: 主程式结束27-29: QT Designer 的注解30-33: 清除Form1由於我们要常常用到QT Designer, 也就是说,需要常常用到uic 这苹程式. 为了省去每次都要打一堆东西的麻烦.我们来写一各小script 来处理.ui 档案.不难看出, uic 在处理/生成.h .cpp 档案的时侯,用到了两个指令∶uic -o form1.h form1.uiuic -i form1.h -o form1.cpp form1.ui所以我们的script 就写成∶################################################################!/bin/sh ## myuic program convert .ui to .cpp .h by calling uic ##INPUT_UI=$@ ##这里读取外面传回来的文件名###if [ ! -f "$INPUT_UI" ] #then #echo "UIC File $INPUT_UI Not Found" #echo #echo "Userage myuic input_file.ui" #echo #exit 1 #fi ##上面的语句检查我们所输入的.ui文件是否存在##如果找不到指定的.ui文件,则显示一个简短的##使用说明##INPUT_H=`echo $@ | cut -d '.' -f1`.h ##这里我们利用cut 来处理输入的.ui 文件. ##得到一个.h 的文件名##INPUT_CPP=`echo $@ | cut -d '.' -f1`.cpp ##同样的道理,利用cut 产生一个.cpp 的文件名##uic -o $INPUT_H $INPUT_UI ##这里就是利用.ui 产生.h 的文件##uic -i $INPUT_H -o $INPUT_CPP $INPUT_UI ##利用.h 和.ui 产生.cpp 文件. #################################################################我门把这个文件存为myuic. 并切chmod +x 变成可执行档案.然後cp 到/usr/bin 上面. 如果您在电脑中没有root 的权限.可以在自己的$HOME 目录中做一个bin 的Directory 出来.然後去编辑您的.bash_profile (这里假设您用的是bash)如果您的.bash_profile 中本身已经有了PA TH 这段文字,那麽您只要在原本的PA TH 後面加上:$HOME/bin就可以了.如果没有那麽就在您的.bash_profile 中写入∶PA TH=$PA TH:$HOME/binexport PA TH这样您以後就可以直接执行myuic 这个文件了.现在试试看用myuic 来处理刚刚的那个form1.ui 这个文件吧. 先把旧的.h .cpp 都删除掉∶rm -f *.cpp *.h然後用myuic 来生成新的.cpp .h 文件∶myuic form1.ui这时候用ls 就会看到form1.cpp form1.h form1.ui 这三个文件了这时侯我们只需要写一个小的main.cpp就可以编译form1.cpp了.main.cpp非常的简单#include "form1.h"#includeint main(int argc, char **argv){KApplication app(argc, argv, "Form1"); //KDE 是建立在QT的基础上得所以KApplication//所以kapp.h实际上包含了qapplication.hForm1 *form1=new Form1();form1->show();app.setMainWidget(form1);return(app.exec());}基本上来说,很简单.然後当然就是编译啦.我建议写出来的东西都用Kdevelop 来解决.首先Kdevelop 介面非常的友善.又能省下写Makefile 的麻烦.打开Kdevelop 以後,选择项目->新建, KDE2-Normal, 然後选择Next,在这一页中.注意不要在任何选项中打"x",因为我们用不到.反而会增加麻烦.最後一直next,然後create , exit. 这时侯我们就已经有一个新的项目可以用了.在menu 中选择:项目->添加现存文件.然後把qt_program 中的form1.cpp form1.h 和main.cpp 加入. 这时候只要按一下F9 , Kdevelop 就会自动帮您把程式compile 出来.并且执行. 程式执行後,我们不能用click 那个Exit Button 退出程式.因为我们并没有给他退出的信号.现在让我们来把程式码作些改动∶############################################################form1.h#ifndef FORM1_H#define FORM1_H#includeclass QPushButton;class Form1 : public QDialog{Q_OBJECTpublic:Form1(QWidget *parent=0, const char *name=0);QPushButton* PushButton1;};#endif // FORM1_H##################################################################form1.cpp#include "form1.h"#include#includeForm1::Form1(QWidget* parent, const char* name): QDialog(parent, name){setCaption(tr("Form21"));PushButton1=new QPushButton(this,"PushButton1");PushButton1->setGeometry(QRect(130,160,161,71));PushButton1-vsetText(tr("Exit"));connect(PushButton1, SIGNAL(clicked()), kapp, SLOT(quit()));}Form1::~Form1(){}####################################################################main.cpp 保持不变.经过一番简化.程式码马上简单很多了.这里我们除了把一些由QT Design 做出的不必要的code 挑除以外.对form1.cpp做了两个小改动.1.增加了#include 这个head file.2.我们把∶connect(PushButton1, SIGNAL(clicked()), PushButton1, SLOT(setFocus()));改变为connect(PushButton1, SIGNAL(clicked()), kapp, SLOT(quit()));同样的信号传送,但是目标对象有所改变.现在目标将作用在kapp 上面也就是我们的主程式(main application),而SLOT 则是呼叫quit(),现在Kdevelop 中更改程式码.然後按下F9 .等待程式运行.这时侯我们的程式,只要在那个Exit 的Button上面用mouse click 一下. 这个程式就完全关闭了.现在我们在这个PushButton 中再增加一些功能.我们来看看QT Designer 中的ToolTip功能. 如果您的QT Designer 中Property Edit 并没有自动出现.那麽请在QT Designer中选择Menu 中的Windows 然後选择Property Edit. 只要在PushButton1 那个Button上面用mouse click 一下. 就可以对Pushbutton1 的Property 进行编辑. 在PropertyEdit 中的ToolTip 後面可以进行文字输入的地方,打入下面的文字∶Click On this Button Will Exit Main Window.然後sava 文件. (Form1.ui)在用我们的小script 呼叫uic 程式把, Form1.ui 转成Form1.h 和Form1.cppmyuic form1.ui这时侯我们来观察生成的form1.cpp 文件,我们会发现现在这里面比一前多了些东西.现在这里多了一行:QToolTip::add( PushButton1, tr( "Clicke On this Button Will Exit Main Window." ) );这里,我们用QToolTip中的add,在Object (PushButton1) 上面加入"Clicke On this ButtonWill Exit Main window."这个字幕.现在我们在前面那个被我们简化的form1.cpp 中,加入上面那行程式码,因为我们需要调用到QToolTip 所以我们也要把qtooltip.h 给include 进去.##################################################################form1.cpp#include "form1.h"#include#include#include //因为我们需要用到QToolTip所以,这里要加入qtooltip.hForm1::Form1(QWidget* parent, const char* name): QDialog(parent, name){setCaption(tr("Form21"));PushButton1=new QPushButton(this,"PushButton1");PushButton1->setGeometry(QRect(130,160,161,71));PushButton1->setText(tr("Exit"));QToolTip::add(PushButton1, tr("Click On this Button Will Exit Main Window."));connect(PushButton1, SIGNAL(clicked()), kapp, SLOT(quit()));}Form1::~Form1(){}####################################################################这时侯,重新编译这个form1 的程式.您就会看到,当您把mouse 移动到Exit 那个按钮的时侯.停留差不多一两秒钟. "Click On this Button Will Exit Main Window"的字样就会出现.QPushButton 中还有一个常用的功能就是setEnabled 了.setEnabled 通过TRUE 和FALSE 这两个值.可以决定这个扭是否可以被使用者按下.我们现在在QT Designer 中的Property Edit 中把Enable 选择成FALSE, 然後用myuic 生成新的程式码.$myuic form1.ui这时候再去观察form1.cpp 会发现里面多了一行PushButton1->setEnabled( FALSE ); 这一行就把PushButton1 设置为不可使用了. 如果需要PushButton1 可以正常的被Click, 那麽只要用PushButton1->setEnabled(TRUE) 就可以了.提示∶最常用的作法通常是做出一个SLOT 或者一个判断语句,来设定PushButton 的状态.QPushButton 还有一各场常被用到的功能就是Font (字体的设定)在QT 中,我们通过QFont 可以设定字体的大小,种类.在QT Designer 中的Property Edit 中.有一个Font 的选项.我们在Font 後面的那个... 上面按一下,就会出现一个可以选择font 的window. 这里我们以Courier(adobe) 24 号字为例子.选择後, Save, 然後观察重新用uic 生成的.cpp 程序码. 我们会发现主程式中多出了下面这些程式码∶QFont PushButton1_font( PushButton1->font() );PushButton1_font.setFamily( "adobe-courier" );PushButton1_font.setPointSize( 24 );PushButton1->setFont( PushButton1_font );後面还多出一个bool Form1::event( QEvent* ev ). 这里我们先不要去理会bool Form1::event( QEvent* ev )只看下面这四行就好了∶1. QFont PushButton1_font( PushButton1->font() );2. PushButton1_font.setFamily( "adobe-courier" );3. PushButton1_font.setPointSize( 24 );4. PushButton1->setFont( PushButton1_font );第一行是用QFont 生成PushButton1_font. PushButton1_font 是为了给PushButton1 做字体设定第二行是告诉PushButton1_font 使用那种字型. 我们这里使用的是adobe-courier第三行用了setPointSize 设定了我们需要用到多大的字,这里我们用的是24 号字.第四行就真正的把这些值给到了PushButton1 中.也就是说告诉PushButton1 去改变字体的显示.加入下面的代码以後,重新编译form1, 就会看到那个按钮中的Exit 这几个字明显的变大了.字体也改变了.提示∶通常在设定字体的时侯.都是用#define 的方式在文件的开头宣告出来.例如#define FONT_SIZE 24然後在设定时用PushButton1_font.setPointSize(FONT_SIZE)这样当您要改字体的时侯,只要把#define FONT_SIZE 後面的值改了整个程式中所有的字体就都改变了.而省去了在需要改变字体的时侯,一个个的去改变没一个setPointSize中的值√PushButton 是非常之常用的一个东西.可以说是任何程式都不可少的.通常最常见的用途就是作为"退出" 按钮,对话窗口的选择按钮等等.QLabel 的使用∶现在我们再来看看QLabel 的用法. 在QT Designer 中, 用Mouse 选择Text Label,(就是那个画了个『A』的图标.)然後用Mouse 画出一个随便大小的Text Label. 再用Mouse 在这个Label 上面DoubleClick 一下.将跳出的Window 中的那个TextLabel1 改成My Label. 然後按Save 保存文件. 用uic 转成.cpp 和.h 文件.这使侯,我们发现,在.h 文件中,多出了class QLabel; //这里告诉程式,我们下面需要用到QLabelQLabel* TextLabel1; // 用QLabel 生成*TextLabel1在.cpp 中,我们则看到了多出下面这些东西.#include //这就不用我多说了吧, include 进qlabel.h 因为我们的QLabel 需要TextLabel1 = new QLabel( this, "TextLabel1" ); //定义TextLabel1TextLabel1->setGeometry( QRect( 130, 120, 171, 91 ) ); //设定TextLabel 的位置TextLabel1->setText( tr( "My Label" ) ); // 还既得我们输入的My Label 吧.也就是给TextLabel1 定的//显示出来的东西.就是用setText 在这里设定的.现在我们把这些加入到我们前面写的那个程式中.将上面的东西加入到form1.h 和form1.cpp 中.不过我们这里需要做一点小小的改变.就是把TextLabel1 的位置远一下.放造屏幕的最左上角.我门把:TextLabel1->setGeometry( QRect( 130, 120, 171, 91 ) );改换成:TextLabel1->setGeometry( QRect( 0, 0, 171, 91 ) );重新编译我们的程式.就会看到在程式窗口的最左上角,有一排文字的出现.文字就是我们的TextLabel 中定义的"My Label".现在回到我们的程式部份.在前面的PushButton 中,我们给我们的PushButton 定义了字型及字体.实际上,字型及字体的定义.在QT 中是通用的. 我们可以用一样的方法来定义QLabel 的字体.我们现在在程式中加入∶QFont TextLabel1_font( TextLabel1->font() );TextLabel1_font.setFamily( "adobe-courier" );TextLabel1_font.setPointSize( 24 );TextLabel1->setFont( TextLabel1_font );这样我们就把这个TextLabel改成了跟前面PushButton 一样的字体courier (adobe) 24 号字.大家常常能看到QT 中的TextLabel 是用图片来显示的.实际上,这也很简单.我们在QT Designer 中,首先在我们刚刚生成的那个TextLabel 上面用Mouse Click 一下.把Property Edit 的Focus Set 到我们得TextLabel 上面. (如果您刚刚没有用Mouse 在您的QT Designer 上面乱按的话.那麽您的PropertyEdit 中的Focus 应该本身就已经在TextLabel 上了)这时侯,我们在Property Edit 中找一个叫做pixmap 的东西.在pixmap 後面的『...』中按一下,就出现了一个新的让您还则图片的视窗. QT Designer 中目前可以接受的图片格式为(这篇文章用的是QT Designer 1.1)bpm, jpeg, pbm, pgm, png 和ppm. 所以大家随便找一个上面格式的图片.然後选择OK.这时侯您就会发现那个TextLabel 变成您选择的图片了. 也许您会发现,图片并没有完全显示出来,而是只显示了一部分.(如果您选择的图片大过您的TextLabel 的话)这是很常见的.在pixmap 底下,有一个scaledContents 的选项.只要把选项後面的值改成True 就好了.这时侯您看到的就是一个经过平衡收放过大小的图片了. 保存(Save)起来.让我们来看看程式码这边是如何处理这些图片的吧.首先我们看到的是在.cpp 的文件中,多出了:#include#include这两个文件.这些都是处理图片时需要的.後面也许大家就头大了.static const char* const image0_data[] = {xxxxxxxxxxxxxxxxxxxx.........};好长的一段.这些是什麽呢?看上去满复杂的.不用怀疑,这就是您放进去的那个图片.只不过这里是用xpm 的格式来处存的.什麽事XPM 呢?其实XPM 是XPixMap的简称. XPM 是Linux 中X11 的一种图像处存的方法.在XPM 中,图像被允许用ASCII 文字模式来保存起来. 而XPM 的另一个特性就是可以直接被 C Compiler 所接受.也就是说您可以直接把XPM 的图片编译到您的程式中.把XPM 直接编译到程式中有两个最大的好处:第一点是程式本身如果有很多图片,用XPM 全部编译进程式中.就避免了在发行程式得时侯,需要附带很多图片的麻烦.第二点就是「相对」来说,被编译进程式的图片,对於一般的普通使用者来说,要改起来会比较麻烦些.当然,如果说您不准发行Open Source Code的程式.在没有Source Code 的情况下.想要改您放放入的图片,就更家困难了.但是相对的,也有一些不便性∶程式码本身会加大很多图片的更改性不灵活接下来,我们看到了下面的程式码∶QPixmap image0( ( const char** ) image0_data ); \image0_data 就是前面那个XPM 的图片啦TextLabel1->setPixmap( image0 ); \ 这里是告诉TextLabel1 去使用并且显示image0 (image0_date) TextLabel1->setScaledContents( TRUE ); \打开自动平衡收放图片大小的功能.QPixmap 本身其实就接受xpm 档案. 所以我们可以不用把XPM 的Source 编译进程式中.而改用QPixmap pixmap("image.xpm")的形式.当然,我们需要把图片文件转换成XPM 的格式.这里我们用到了Linux 中本身为我们准备好的工具convert. convert 本身支持非常多的图片各式的转换.如果您有兴趣,可以用man convert 来看看convert 的详细内容.这里我只介绍如果把一个图片文件转换成xpm 的格式.我选择的是Linux 中的代表图片.一苹可爱的小企鹅--logo.gif,相信每一个安装了linux 的人,应该都可以找到这个图片吧.您可以试这用locate logo.gif 来寻找.找到以後,把logo.gif 复制到程式放有form1 程式码的目录下. 然後用下面的指令来作图片的格式转换∶convert logo.gif logo.xpm这时侯,我们就可以看到目录中多了一个logo.xpm 的文件了.现在我们回到我们的form1 程式码中.在前面加入#include然後在TextLabel的後面任何地方,加入下面三行程式码∶QPixmap pixmap("logo.xpm"); //这里就是告诉pixmap 我们刚刚convert 出来的那个图片TextLabel->setPixmap(pixmap); //让TextLabel 调用/显示pixmap (logo.xpm)TextLabel->setScaledContents( TRUE ) ; //打开自动平衡收放图片大小的功能记住喔,一定不能在TextLabel = new QLabel( this, "TextLabel1" ); 以前加入喔!这时侯重新编译我们的程式码,在新的程式中,您就可以看到那苹可爱的小企鹅了.您也许会发现企鹅胖的有点变形.那是因为自动平衡是根据您的TextLabel 的大小来收放图片的.所以我们只要把:TextLabel1->setGeometry( QRect( 0, 0, 171, 91 ) );改换成∶TextLabel->setGeometry( QRect( 0, 0, 171, 191 ) );也就是说把高度增加100,重新编译以後.可以看到,企鹅的大小变得正常多了.√Label 也是最常用的组件.通常被用为在视窗中的文字显示.RadioButton 的简介:接下来让我慢看看RadioButton. 在QT Designer 中,有一个圆圈圈的图案,在圆圈中有个黑色的实心圆圈.那个就是RadioButton 了.现在我们在我们的form1 中,增加一个RadioButton.然後来观察程式码.在.h 文件中,多出了两行class QRadioButton; //告诉程式我们需要用到QRadioButton和QRadioButton* RadioButton1; //QRadioButton *RadioButton1在.cpp 的文件中出现了下面三行程式码,以及一个include 文件#include //QRadioButton 所需要的include 文件RadioButton1 = new QRadioButton( this, "RadioButton1" ); //生成一个新的QRadioButton 在介面this上// this 就是只当前的主介面.也就是我们的// Form1 : public QDialog// 白话文的方法来说呢,就是我们这个程式的// 主显示视窗.相信大家已定很熟习了吧.RadioButton1->setGeometry( QRect( 260, 60, 151, 61 ) ); // 通过setGeometry(QRect()) 来设定我们这个// RadioButton 的大小RadioButton1->setText( tr( "RadioButton1" ) ); // 用setText() 来给我们的这个RadioButton// 命名.这里这里名为"RadioButton1"将上面这些程式码加入到我们的form1.h 和form1.cpp 中,重新编译程式,我们就看到了一个名为RadioButton1的RadioButton 了.RadioButton 除了可以用到PushButton 中的setEnabled( FALSE )的选项来Disable 这个RadioButton以及在QT 中通用的setFont 以外,还提共一个非常常用的setChecked (TRUE/FLASE) 功能.在QT Designer 中, 用mouse click 一下我们刚刚生成的那个RadioButton, 然後在QT Designer 的Property Edit 中.选择checked, 在checked 後面选择True. 经过uic 程式以後,重新观察.cpp 程式码, 您会发现,在.cpp 文件中,多出了一行∶RadioButton1->setChecked( TRUE ); //这行就设定了, RadioButton1 在程序一看使的时侯//就已经被设定为内定选项了.重新编译程式码以後,就可以看出.这时侯RadioButton1 前面已经被选中了.选择按钮,重要就在於选择.现在我们来增加另外一组RadioButton 就可以很简洁的看出setChecked 的作用了.在您的form1.h 文件中,加入∶QRadioButton* RadioButton2;在form1.cpp 文件中加入∶RadioButton2=new QRadioButton2(this,"RadioButton2");RadioButton2->setGeometry(QRect(260, 140, 151, 61)); //这里的位置比RadioButton1的位置低出//80 来.这时侯我们重新编译後,执行程式,就会发现. RadioButton1 前面是被自动选择上了.而RadioButton2 则没有.因为RadioButton 常常被用作二选一,三选一或者多选一.所以这里向大家简单的介绍一下ButtonGroup.在QT Designer 中,上面那一堆小按钮中有一个是ButtonGroup 的按钮.现在在这个上面用mouse click一下.然後在QT Designer 中画出一个方的范围来. 这个范围要把刚刚我们画的那个RadioButton 包进去喔.一定要. (see figure 2)figure 2回来检查uic 生成的source code. 我们会发现form1.h 中多出了class QButtonGroup; // 用到QButtonGroupQButtonGroup* ButtonGroup1; // QButtonGroup *ButtonGroup1而在form1.cpp 中,有了#include // QButtonGroup 需要的.h 文件ButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" ); //在主视窗中生成ButtonGroup1ButtonGroup1->setGeometry( QRect( 230, 40, 251, 181 ) ); // 设定ButtonGroup的位置与大小ButtonGroup1->setTitle( tr( "ButtonGroup1" ) ); //设定显示为"ButtonGroup1"RadioButton1 = new QRadioButton( ButtonGroup1, "RadioButton1" );//在这里,我们看到,这次不再是//RadioButton1 = new QRadioButton( this, "RadioButton1" );//而是把this 换成了ButtonGroup1 了.这也就是说,这次我们//生成的RadioButton1 是在ButtonGroup1 这个介面上,而不是//以前的主视窗了.RadioButton1->setGeometry( QRect( 30, 30, 151, 61 ) );// RadioButton1 的位置也有了改变. 这里的30, 30 是以ButtonGroup1 来// 作为标准的.而不事主视窗.// 下面这两行就不用多说了,大家一定知道RadioButton1->setText( tr( "RadioButton1" ) );RadioButton1->setChecked( TRUE );现在我们自己把上面的程式码加入到我们的form1.h 和form1.cpp中.同时把我们的RadioButton1 从this 改到ButtonGroup1位置也改变为RadioButton1->setGeometry( QRect(30,30,151,61));同时更该RadioButton2 的设定. this 改成ButtonGroup1位置改成RadioButton2->setGeometry( QRect(30, 100, 151, 61));使RadioButton2 跟RadioButton1 的位置一样,但是低70重新编译程式.您就会发现这时侯的RadioButton 变成二选一了.两个中您只能选择一个.当您在RadioButton2 前面用mouse 按一下, RadioButton1前面就会自动清除掉.√RadioButton 通常是用在唯一选择中.也就是说从多个选择中,选出一个来.所以通常配合ButtonGroup来使用.但也可以单个独立使用.CheckBox:CheckBox 是一种跟RadioButton 差不多的东西.通常的区别在於CheckBox 被用於多重选择. CheckBox 在QT Designer 中是一个方方的中间有个X 的标 的东西.好像一个小箱子一样.我们现在好像RadioButton 一样,做出两个Checkbox, 然後在做出一个ButtonGroup.把checkbox 2 设定为checkedform1.h 文件中,多出了class QCheckBox;和QButtonGroup* ButtonGroup2;QCheckBox* CheckBox1;QCheckBox* CheckBox2;而form1.cpp 呢.也就有了#includeButtonGroup2 = new QButtonGroup( this, "ButtonGroup2" );ButtonGroup2->setGeometry( QRect( 20, 180, 161, 141 ) );ButtonGroup2->setTitle( tr( "ButtonGroup2" ) );CheckBox1 = new QCheckBox( ButtonGroup2, "CheckBox1" );CheckBox1->setGeometry( QRect( 20, 30, 121, 41 ) );CheckBox1->setText( tr( "CheckBox1" ) );CheckBox2 = new QCheckBox( ButtonGroup2, "CheckBox2" );CheckBox2->setGeometry( QRect( 20, 90, 121, 41 ) );CheckBox2->setText( tr( "CheckBox2" ) );CheckBox2->setChecked( TRUE );相信上面就不用我多解释,大家也一定明白了吧.实际上CheckBox 跟RadioButton是一种非常类似的东西.LineEdit--进入文字的处理QT Designer 中有一个标有『ab』标 的小Icon, 那就是LineEdit 了.现在我们在这里按一下,然後画出一个LineEdit 来. 然後在这个LineEdit上面,用mouse double click. 在出现的window 中输入"Display Some Text"现在我们来看看程式码的变化∶form1.h 中,定义了LineEdit1class QLineEdit;QLineEdit* LineEdit1;form1.cpp 中∶#includeLineEdit1 = new QLineEdit( this, "LineEdit1" ); \生成LineEdit1LineEdit1->setGeometry( QRect( 130, 70, 251, 71 ) ); \设定LineEdit1 的位置LineEdit1->setText( tr( "Display Some Text" ) ); \ LineEdit1 显示的字为"Display Some Text"我们可以看到,在QT Designer 的Property Edit 中,有一个echoMode 的选项.现在我们把他选择为Password. 这时侯我们就看到刚刚打入的"Display Some Text" 这几个字,已经变成了"*******"了.在QT Designer 中,您可以选择echoMode 为Password 或者是NoEcho. 这些通常都是用作密码输入用的.当客户输入一组密码的时侯,屏幕上的密码输入window 并不显示用户的密码明文. 而是采用Password---"*******" 或者NoEcho ----(什麽都不显示) 来代议. form1.cpp 的程式码中会有下面的程式码出现∶LineEdit1->setEchoMode( QLineEdit::Password );√LineEdit 通常是用来显示或者读取单行的数据.MultiLineEdit--进一步学习文字处理MultiLineEdit 也是作为文字处理用的.但是他的功能就比LineEdit 要强出很多了. MultiLineEdit 的Icon 是一个上面画有『cde』下面画有『ab』的图案的按钮.我们先做出一个MultiLineEdit,然後double click, 在文字部份写入∶This is a Multi Line Edit.we are trying to put some text here.然後观察程式码:form1.h 多了class QMultiLineEdit;和QMultiLineEdit* MutiLineEdit1;form1.cpp中有了#includeMultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" );MultiLineEdit1->setGeometry( QRect( 70, 40, 441, 281 ) );MultiLineEdit1->setText( tr( "This is a Multi Line Edit. ""We are trying to put some text here. """ ) );这里不难看出.除了MultiLineEdit 中的setText 可以显示多行文字以外.其他的东西跟LineEdit 并没有什麽差别.在MultiLineEdit 中,我们还能选择些其他的选项.常用的有, WordWrap, UndoDepth, ReadOnly, overWriteMode. 现在我们把这些全都在Property Edit 中选择出来.WordWarp 选择为NoWarpUndoDepth 设定到255ReadOnly 为FALSEoverWriteMode 为TRUE这时侯form1.cpp 中就有了下面这些新的程式码∶MultiLineEdit1->setWordWrap( QMultiLineEdit::NoWrap );//设定我们的MultiLineEdit1 不支援自动断行MultiLineEdit1->setUndoDepth( 255 );//设定在这个MultiLineEdit1 中所输入的数据可以通过mouse 的undo 或者键盘的ctrl + z//来进行复原(undo)可以复原(undo)的次数为255 次MultiLineEdit1->setReadOnly( FALSE );。

qt+creator系列教程(上)

qt+creator系列教程(上)
解决这个问题我们可以将相应的.dll 文件放到系统 中。在 Qt Creator 的安装目录的 qt 文件下的 bin 文件夹下(我安装在了 D 盘, 所以路径是 D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到 mingwm10.dll 文件,将其复制到 C:\WINDOWS\system 文件夹下,即可。下 面再提示缺少什么 dll 文件,都像这样解决就可以了。
因为 return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到 if 语句中,而在 else 语句中用 else return 0; ,这样如果 enterBtn 没有被按下,那么程序就会结 束执行了。
到这里,我们就实现了一个界面结束执行,然后弹出另一个 界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。
2.然后新建一个 Qt Designer Form Class 类,类名为 loginDlg,选用 Dialog without Buttons,将其加入上面的工程中。文件列表如下:
3.在 logindlg.ui 中设计下面的界面:行输入框为 Line Edit。其中用户名后面 的输入框在属性中设置其 object Name 为 usrLineEdit,密码后面的输入框为 pwdLineEdit,登录按钮为 loginBtn,退出按钮为 exitBtn。
二、Qt Creator 编写多窗口程序(原创)
实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直
接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后, 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理:

Qt项目管理文件(.pro)及其作用详解

Qt项目管理文件(.pro)及其作用详解

Qt项⽬管理⽂件(.pro)及其作⽤详解在 Creator 中新建⼀个 Widget Application 项⽬ samp2_1,在选择窗⼝基类的页⾯选择 QWidget 作为窗体基类,并选中“Generate form”复选框。

创建后的项⽬⽂件⽬录树如图 1 所⽰。

图 1 项⽬⽂件的⽬录树这个项⽬包含以下⼀些⽂件:项⽬管理⽂件 samp2_1.pro,存储项⽬设置的⽂件。

主程序⼊⼝⽂件 main.cpp,实现 main()函数的程序⽂件。

窗体界⾯⽂件 widget.ui,⼀个 XML 格式存储的窗体上的元件及其布局的⽂件。

widget.h 是所设计的窗体类的头⽂件,widget.cpp 是 widget.h ⾥定义类的实现⽂件。

中,任何窗体或界⾯组件都是⽤类封装的,⼀个类⼀般有⼀个头⽂件(.h ⽂件)和⼀个源程序⽂件(.cpp ⽂件)。

本节先来介绍⼀下项⽬管理⽂件(.pro⽂件)。

后缀为“.pro”的⽂件是项⽬的管理⽂件,⽂件名就是项⽬的名称,如本项⽬中的 samp2_1.pro。

下⾯是 samp2_1.pro ⽂件的内容。

QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = samp2_1TEMPLATE = appSOURCES += \main.cpp \widget.cppHEADERS += \widget.hFORMS += \widget.ui项⽬管理⽂件⽤于记录项⽬的⼀些设置,以及项⽬包含⽂件的组织管理。

“Qt += core gui”表⽰项⽬中加⼊ core gui 模块。

core gui 是 Qt ⽤于 GUI 设计的类库模块,如果创建的是控制台(Console)应⽤程序,就不需要添加core gui。

Qt 类库以模块的形式组织各种功能的类,根据项⽬涉及的功能需求,在项⽬中添加适当的类库模块⽀持。

Qt5.9.1qmake中文手册

Qt5.9.1qmake中文手册

Qt5.9.1qmake中⽂⼿册Qt5.9.1 qmake中⽂⼿册来源:/qm843230255/article/details/77584969qmake ⼿册qmake⼯具有助于简化跨平台项⽬的开发.它⾃动⽣成Makefiles,只需要很少的信息就可以创建Makefiles。

⽆论是Qt项⽬或者是其他软件项⽬,都可以使⽤qmake。

qmake通过项⽬⽂件(.pro)⾥提供的信息⾃动⽣成Makefiles.项⽬⽂件(.pro)由开发者创建,通常项⽬⽂件(.pro)都很简单,⼤型复杂的项⽬也可以通过项⽬⽂件(.pro)创建。

qmake包含的附加功能⽀持Qt跨平台开发,qmake可以为和⾃动⽣成编译规则。

qmake可以在⽆需修改项⽬⽂件(.pro)的情况下⾃动⽣成Microsoft Visual studio项⽬。

⽬录⼤纲预览qmake⼯具提供了⼀个管理应⽤程序,库和其他组件的⾯向项⽬的系统。

可以使你控制项⽬⾥的所有源⽂件,并简明描述了构建过程中每⼀步的信息。

qmake扩展了每个项⽬中在编译和连接中运⾏必要命令的Makefile⽂件中的信息。

描述项⽬Qt项⽬通过项⽬⽂件(.pro)⽂件内容来描述这个项⽬。

qmake利⽤项⽬⽂件(.pro)中的信息⽣成Makefiles,Makefiles包含了编译项⽬所需的所有命令。

项⽬⽂件(.pro)通常包含源⽂件和头⽂件的列表,通⽤的配置信息和特定应⽤程序细节, 例如外部库链接列表,或者外部头⽂件包含⽬录列表等。

项⽬⽂件(.pro)可以包含许多不同类型的元素,包括注释,变量声明,内置函数和⼀些简单的控制结构。

⼀些最简单的项⽬中, 只需声明⽤于构建基本的配置选项的源⽂件和头⽂件。

更多关于如何创建⼀个简单的项⽬⽂件,请参考。

你可以为更复杂的项⽬创建复杂的项⽬⽂件(.pro)。

预览项⽬⽂件,参见。

关于项⽬⽂件(.pro)中使⽤变量和函数的详细信息,请看.你可以使⽤⼀个应⽤程序或者库的项⽬模板,通过指定专门的配置来调整构建过程。

qt creator 降级方法

qt creator 降级方法

(原创实用版4篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的4篇《qt creator 降级方法》,供大家借鉴与参考。

下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(4篇)《qt creator 降级方法》篇1如果您想将Qt Creator的版本降级,可以尝试以下方法:1. 卸载最新版本的Qt Creator,并安装旧版本的Qt Creator。

您可以从Qt官方网站下载旧版本的Qt Creator。

2. 如果您使用的是Qt Creator的自定义安装,则可以尝试删除最新版本的Qt Creator,并重新安装旧版本的Qt Creator。

3. 如果您使用的是Qt Creator的预安装版本,则可以尝试从您的操作系统中删除最新版本的Qt Creator,并重新安装旧版本的Qt Creator。

4. 如果您使用的是Qt Creator的自定义安装,则可以尝试删除最新版本的Qt Creator,并重新安装旧版本的Qt Creator。

5. 如果您使用的是Qt Creator的预安装版本,则可以尝试从您的操作系统中删除最新版本的Qt Creator,并重新安装旧版本的Qt Creator。

《qt creator 降级方法》篇2如果您想将Qt Creator从较新的版本降级到较旧的版本,可以按照以下步骤进行:1. 打开Qt Creator的安装目录,找到Qt Creator的安装文件。

2. 找到Qt Creator的安装文件,并将其重命名为较旧的版本号。

例如,如果您的当前版本是5.14.0,您可以将其重命名为5.13.0。

3. 打开命令提示符或终端窗口,并导航到Qt Creator的安装目录。

4. 运行以下命令,以卸载当前版本的Qt Creator:```shell卸妆 qtcreator*```5. 卸载完成后,您可以安装您想要的较旧版本的Qt Creator。

Qt项目界面文件(.ui)及其作用

Qt项目界面文件(.ui)及其作用

Qt项目中,后缀为“.ui”的文件是可视化设计的窗体的定义文件,如widget.ui。

双击项目文件目录树中的文件 widget.ui,会打开一个集成在 Qt Creator 中的 Qt Designer 对窗体进行可视化设计,如图 1 所示。

图 1 集成在 Qt Creator中的 UI 设计器本教程后面将称这个集成在 Qt Creator 中的 Qt Designer 为“UI 设计器”,以便与独立运行的 Qt Designer 区别开来。

图 1 中的 UI 设计器有以下一些功能区域:•组件面板:窗口左侧是界面设计组件面板,分为多个组,如Layouts、Buttons、Display Widgets等,界面设计的常见组件都可以在组件面板里找到。

•中间主要区域是待设计的窗体。

如果要将某个组件放置到窗体上时,从组件面板上拖放一个组件到窗体上即可。

例如,先放一个 Label 和一个 Push Button 到窗体上。

•Signals 和 Slots 编辑器与 Action 编辑器是位于待设计窗体下方的两个编辑器。

Signals 和Slots 编辑器用于可视化地进行信号与槽的关联,Action 编辑器用于可视化设计 Action。

•布局和界面设计工具栏:窗口上方的一个工具栏,工具栏上的按钮主要实现布局和界面设计。

•对象浏览器(Object Inspector):窗口右上方是 Object Inspector,用树状视图显示窗体上各组件之间的布局包含关系,视图有两列,显示每个组件的对象名称(ObjectName)和类名称。

•属性编辑器(Property Editor):窗口右下方是属性编辑器,是界面设计时最常用到的编辑器。

属性编辑器显示某个选中的组件或窗体的各种属性及其取值,可以在属性编辑器里修改这些属性的值。

图 2 显示的是选中窗体上放置的标签组件后属性编辑器的内容。

最上方显示的文字“LabDemo: QLabel”表示这个组件是一个 QLabel 类的组件,objectName 是LabDemo。

将.ui文件转换为.py文件

将.ui文件转换为.py文件

将.ui文件转换为.py文件
1.方法一:使用Eric6转换
使用此方法得先创建一个工程,否则这个图标显示灰色,不可点击。

创建工程后左键点击这个Forms图标,
紧接着在下面右键点击,添加你创建的forms文件
在添加完成之后,选中你添加的.ui文件右键,编译
左上角出现这个提示,编译成功
点击Forms图标左边的Sources,即可看到刚才生成的.py文件,按F2直接可以运行
2.方法二:通过命令转换
通过PyQt5提供的命令行工具
pyuic5 -o test.py test.ui
出现这个错误,时因为pyuic5.exe所在的目录没有添加到环境变量引起的,添加后重新打开命令框
成功。

Qt字符串与数字之间的转换方法详解

Qt字符串与数字之间的转换方法详解

Qt界面设计时使用最多的组件恐怕就是 QLabel 和 QLineEdit 了,QLabel 用于显示字符串,QLineEdit 用于显示和输入字符串。

这两个类都有如下的两个函数用于读取和设置显示文字。

这两个函数都涉及到 QString 类。

QString 类是 Qt 程序里经常使用的类,用于处理字符串。

QString 类可以进行字符串与数字之间的转换,使用QLineEdit 就可以实现数字量的输入与输出。

图 1 编辑状态的界面图 1 是实例设计时的窗体,是基于 QWidget 创建的可视化窗体。

界面设计使用了布局管理,窗体上组件的布局是:上方的几个组件是一个 GridLayout,下方的 9 个组件也是一个 GridLayout,两个 GridLayout 和中间一个Vertical Spacer 又组成一个 VerticalLayout。

在布局设计时,要巧妙运用 VerticalSpacer 和 HorizontalSpacer,还要会设置组件的 MaximumSize 和 MinimumSize 属性,以取得期望的布局效果。

例如,在图 1 中,两个 GridLayout 之间放了一个垂直方向的分隔,当窗体变大时,两个 GridLayout 的高度并不会发生变化;而如果不放置这个垂直分隔,两个 GridLayout 的高度都会发生变化,GridLayout 内部组件的垂直距离会发生变化。

在 UI 设计器里,选中图 1 中的“计算”按钮,在右键快捷菜单里单击“Go to slot…”,并在出现的对话框里选择 clicked() 信号创建槽函数,在自动生成的函数体里编写如下的代码,实现从界面上分别读取数量和单价,相乘计算后将结果再显示到文本框里。

void Widget::on_btnCal_clicked(){QString str=ui->editNum->text () ;//读取n数量nint num=str.toInt();str=ui->editPrice->text (); //读取"单价"float price=str.toFloat();float total=num*price;str=str.sprintf ("%.2f",total);ui->editTotal->setText(str);}QString 类从字符串转换为整数的函数有:这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数;若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。

qt将字符串转化为指针变量的方法

qt将字符串转化为指针变量的方法

qt将字符串转化为指针变量的方法使用Qt将字符串转化为指针变量的方法在Qt开发中,经常会遇到将字符串转化为指针变量的需求。

下面我们将介绍使用Qt的方法来实现这一功能。

Qt提供了一个QString类用于处理字符串,而QString类具有将字符串转化为指针变量的方法。

我们可以通过调用QString类的toStdString()函数来实现这一功能。

具体步骤如下:1. 首先,我们需要创建一个QString对象,并将要转化的字符串作为参数传入。

例如,我们要将字符串"Hello World"转化为指针变量,可以写成如下代码:QString str = "Hello World";2. 然后,我们可以调用QString类的toStdString()函数,将QString对象转化为std::string对象。

代码如下:std::string stdStr = str.toStdString();3. 最后,我们可以将std::string对象的指针作为参数传递给需要指针变量的函数。

例如,我们可以将stdStr.c_str()作为参数传递给需要指针变量的函数。

代码如下:someFunction(stdStr.c_str());需要注意的是,转化后的指针变量在使用完毕后会被自动释放,无需手动释放内存。

除了使用toStdString()函数之外,Qt还提供了其他一些方法用于将字符串转化为指针变量。

例如,我们可以使用toLocal8Bit()函数将QString对象转化为QByteArray对象,然后再使用data()函数获取指针变量。

具体步骤如下:1. 首先,我们需要创建一个QString对象,并将要转化的字符串作为参数传入。

例如,我们要将字符串"Hello World"转化为指针变量,可以写成如下代码:QString str = "Hello World";2. 然后,我们可以调用QString类的toLocal8Bit()函数,将QString对象转化为QByteArray对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档