Qt Creator 窗体控件自适应窗口大小布局

Qt Creator 窗体控件自适应窗口大小布局
Qt Creator 窗体控件自适应窗口大小布局

Qt Creator 窗体控件自适应窗口大小布局

常见的软件窗口大小改变(最大化、手动改变时)需要窗口的部件能够自适应布局,而在Qt的应用程序界面设计中,对于像我一样的初学者如何实现窗口自适应调整还是要绕点弯路的。网上百度了很多,多数说的很含糊,还有很多是用程序实现的,既然已经有Qt Creator那么高集成度的工具了,我还是倾向于直接在Qt Creator中通过可视化配置的方式完成,一是所见即所得,而是效率要高不少。

Qt中如果想实现窗体内空间随着窗体大小调整,必须使用布局管理,常用的布局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer 控件进行填充,因此首先将窗体空间使用布局管理典型应用如下图所示。

我这里使用QGridLayout,按住Ctrl多选需要布局的窗体控件,右键-布局-栅格化局,根据需要进行调整。

要想是控件根据窗体进行调整,最为重要的一点就是设置窗口部件的大小策略,各控件均有这一项设置,如下图所示。

这部分具体的参数解释摘录如下:

结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。

控件的sizePolicy说明控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。下面列举了一些最长用的值:

A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。

B. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以

放大。

C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小

的允许尺寸。

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小

E. Expandint:控件可以自行增大或者缩小

注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)

所以对于需要根据窗口大小对应改变的部件我这里就设置为Expandint。

在部件大小策略的下方还有伸缩因子的设置,用于设置窗口部件在伸缩过程中的对应比例,这部分可以自行摸索。

要想实现随着窗口自动缩放,很重要的一点是需要设置顶级布局,对于一个窗口来说,只能有一个布局成为它的顶级布局,而刚刚的设置还只是控件之间的布局,因此需要放入窗体布局中进行布局。

在没有控件的地方右击-布局-在状体布局中布局,如下图所示:

接下来把需要布局的布局拖放到窗体布局中,这儿可以在右侧对象中选择,然后将控件向上拖入红框中(发现这一步不做也可以,直接进行下一步,不清楚在窗体布局中布局这项是啥区别),最后再在窗体没有控件出右击-布局-选择水平或者垂直布局(因为我之前已经是栅格布局了,相当于只有一个整体布局,因此这里选择哪一个没有区别)下图是操作前后对象窗口的对比。

布局完成后效果如下:

总结:一开始绕弯主要在两个地方,一个是控件的SizePolicy属性设置,二是一定要设置顶级布局。

QT习题

QT习题 一、名词解释 1、虚函数: 2、回调函数: 3、内联函数: 4、信号与插槽: 5、私有函数: 6、构造函数: 7、公有函数: 8、内联函数: 9、信号与插槽: 10、析构函数: 二、判断题 1、在QT中Qwidget不可以作为应用程序的窗口()。 2、在创建窗口部件的时候,窗口部件通常不会显示出来()。 3、布局管理器不是一个窗口部件() 4、FindDialog(QWidget *parent = 0);父参数为NULL,说明有父控件。() 5、show()显示的对话框是模式对话框。用exec()显示的对话框是无模式对话框。 () 6、布局管理器派生自QObject。() 7、Q_OBJECT是一个宏定义,如果类里面用到了signal或者slots,就必须要声 明这个宏。() 8、FindDialog(QWidget *parent = 0);父参数为NULL,说明没有父控件。() 9、槽可以是虚函数,可以是公有的,保护的,也可是私有的。() 10、show()显示的对话框是无模式对话框。用exec()显示的对话框是模式对话 框。() 三、简答题 1、简述一下信号与插槽机制。 2、简述布局管理器的功能,列举3个布局管理器。 3、简述使用Qt设计师,在创建对话框时主要包含哪几个基本步骤? 4、GUI程序通常会使用很多图片,请简述3种提供图片的方式。 5、列举几种Qt中会产生绘制事件的情况。 6、Update()与repaint()之间的区别? 7、对窗体上的控件进行布局管理一般有哪几种方式,简述一下其缺点。 8、简述事件和信号的特点和区别。 9、简述主函数中创建QApplication对象功能。 10、简述使用Qt设计师,在创建对话框时总是包含哪几个基本步骤?

Qt 编写多窗口程序

编写多窗口程序 导语 程序要实现的功能是:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 程序里我们先建立一个工程,设计主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。 在这一篇还会涉及到代码里中文字符串显示的问题。 目录 一、添加主窗口 二、代码中的中文显示 三、添加登录对话框 四、使用自定义的对话框类 正文 一、添加主窗口 1.我们打开Qt Creator,新建Qt Gui应用,项目名称设置为“nWindows”,在类信息界面保持基类为QMainWindow,类名为MainWindow,这样将会生成一个主窗口界面。 2.完成项目创建后,打开mainwindow.ui文件进入设计模式,向界面上拖入一个Push Button,然后对其双击并修改显示文本为“按钮”,如下图所示。 3.现在运行程序,发现中文可以正常显示。在设计模式可以对界面进行更改,那么使用代码也可以完成相同的功能,下面就添加代码来更改按钮的显示文本。

二、代码中的中文显示 1.我们点击Qt Creator左侧的“编辑”按钮进入编辑模式,然后双击mainwindow.cpp文件对其进行编辑。在构造函数MainWindow()中添加代码: MainWindow::MainWindow(QWidget*parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->pushButton->setText("新窗口");//将界面上按钮的显示文本更改为“新窗口”} 这里的ui对象就是界面文件对应的类的对象,在mainwindow.h文件中对其进行了定义,我们可以通过它来访问设计模式添加到界面上的部件。前面添加的按钮部件Push Button,在其属性面板上可以看到它的objectName属性的默认值为pushButton,这里就是通过这个属性来获取部件对象的。 我们使用了QPushButton类的setText()函数来设置按钮的显示文本,现在运行程序,效果如下图所示。 2.我们发现,在代码中来设置按钮的中文文本出现了乱码。这个可以有两种方法来解决,一个就是在编写程序时使用英文,当程序完成后使用Qt语言家来翻译整个软件中的显示字符串;还有一种方法就是在代码中设置字符串编码,然后使用函数对要在界面上显示的中文字符串进行编码转换。因为翻译一个软件很麻烦,对于这些小程序,我们希望中文可以立即显示出来,所以下面来讲解第二种方法。 3.设置字符串编码,可以使用QTextCodec类的setCodecForTr()函数,一般的使用方法就是在要进行编码转换之前调用该函数,下面我们在main.cpp文件中添加代码:

QtCreator安装和helloworld程序编写

封面 作者:PanHon glia ng 仅供个人学习

一、Qt Creator的安装和hello world 程序的编写

我们这里讲述windows 下的Qt Creator ,在Linux 下基本相同。本文先讲述基本的下载、安装和最简单程序的编写,然后在附录里又讲解了两种其他的编写程序的方法。 1.首先到Qt 的官方网站上下载Qt Creator ,这里我们下载windows 版的。下载地址:如下图我们下载:Download Qt SDK for Windows* (178Mb) 下载完成后,直接安装即可,安装过程中按默认设置即可。 2.运行Qt Creator ,首先弹出的是欢迎界面,这里可以打开其自带的各种演示程序。 3.我们用File->New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application 。 5.下面输入工程名和要保存到的文件夹路径。我们这里的工程名为hello world 。 6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next 。 7.我们将base class 选为QDialog 对话框类。然后点击Next 。 8.点击Finish ,完成工程的建立。 9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。 10.程序运行会出现空白的对话框,如下图。 11.我们双击文件列表的dialog.ui 文件,便出现了下面所示的图形界面编辑界面。 12.我们在右边的器件栏里找到Label 标签器件

13.按着鼠标左键将其拖到设计窗口上,如下图 14.我们双击它,并将其内容改为hello world 。 15.我们在右下角的属性栏里将字体大小由9 改为15 16.我们拖动标签一角的蓝点,将全部文字显示出来 17.再次按下运行按钮,便会出现hello world 。 到这里hello world 程序便完成了。 Qt Creator 编译的程序,在其工程文件夹下会有一个debug 文件夹,其中有程序的.exe可执行文件。但Qt Creator默认是用动态链接的,就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首先可能显示“ 没有找到mingwm10.dll ,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”表示缺少mingwm10.dll 文件。 解决这个问题我们可以将相应的.dll 文件放到系统中。在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘,所以路径是 D:\Qt\2009.04\qt\bin ),可以找到所有的相关.dll 文件。 方法一:在这里找到mingwm10.dll文件,将其复制到C:\WINDOWS\systen文件夹下即可。下面再提示缺少什么dll 文件,都像这样解决就可以了。 方法二:将这些dll 文件都与.exe 文件放到同一个文件夹下。不过这样每 个.exe文件都要放一次。 方法三:将D:\Qt\2009.04\qt\bin加入系统Path环境变量。右击我的电脑->属性->高级->环 境变量->在系统变量列表中找到Path,将路径加入其中即可。 附 1:用纯源码编写。 1.新建空的Qt4 工程。 2.工程名为hello world ,并选择工程保存路径(提示:路径中不能有中 文)。 3.在新建好的工程中添加文件。右击工程文件夹,弹出的菜单中选择 Add New。

Qt Creator 窗体控件自适应窗口大小布局

Qt Creator 窗体控件自适应窗口大小布局 常见的软件窗口大小改变(最大化、手动改变时)需要窗口的部件能够自适应布局,而在Qt的应用程序界面设计中,对于像我一样的初学者如何实现窗口自适应调整还是要绕点弯路的。网上百度了很多,多数说的很含糊,还有很多是用程序实现的,既然已经有Qt Creator那么高集成度的工具了,我还是倾向于直接在Qt Creator中通过可视化配置的方式完成,一是所见即所得,而是效率要高不少。 Qt中如果想实现窗体内空间随着窗体大小调整,必须使用布局管理,常用的布局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer 控件进行填充,因此首先将窗体空间使用布局管理典型应用如下图所示。 我这里使用QGridLayout,按住Ctrl多选需要布局的窗体控件,右键-布局-栅格化局,根据需要进行调整。 要想是控件根据窗体进行调整,最为重要的一点就是设置窗口部件的大小策略,各控件均有这一项设置,如下图所示。

这部分具体的参数解释摘录如下: 结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。 控件的sizePolicy说明控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。下面列举了一些最长用的值: A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。 B. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以 放大。 C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小 的允许尺寸。

ubuntu 下QTCreator安装及使用

QT Creator安装与应用 注:在用QT编程时,不要用QtUiTools等库,QTEmbedded中没有这些库。 1、执行以下命令,进行安装QT应用库文件及QT Creator; sudo apt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfig qt4-demos qt4-qmake libqt4-sql-mysql qdevelop (这一步可以省略)sudo apt-get install qt-creator 简介: qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator qt4-designer 可视化窗体设置工具 qt4-doc 这个是帮助文档 qt4-qtconfig Qt的配置工具,这个装好默认好 qt4-demos 官方的一些Demo Qt Assistant是Qt自带的一款可定制、可重新发行的帮助文件浏览器。Qt Assistant 支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器。关于Qt Assistant定制的资料主要是Qt Assistant自身所带的英文文档,虽然讲解比较详细,但是对于初学者来说难以快速的入手https://www.360docs.net/doc/2615885352.html,/space.php?uid=8210028&do=blog&id=343591

QT-Designer使用教程https://www.360docs.net/doc/2615885352.html,/data/2007/1228/article_2935.htm Qt Designer使用简易教程 https://www.360docs.net/doc/2615885352.html,/s/blog_4b0f065f0100e4zv.html QT-Linguist使用方法:QT-Linguist工具主要用在项目的多语言翻译处理过程中https://www.360docs.net/doc/2615885352.html,/jrsnail/blog/item/b179942ec3144a434fc2268d.html 2、按照提示输入“y”,安装相应文件,结果如下界面所示; 3、安装后,单击左上角Applications,选择Programming,会出现刚才安装的相应QT应用程序,如下界面所示;

Qt自定义窗口部件

【原创】Qt自定义窗口部件 QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)改进法 1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。 HexspinBox.h HexspinBox.cpp

2、在需要开发的项目中的窗口中, 1、用Qt Designer创建一个新的窗体main.ui,把控件箱里的QSpinBox添加到窗体中。 2、右击微调框,选择“Promote to ”上下文菜单。 3、在弹出的对话框中,类名处填写“HexSpinBox”,头文件填写“hexspinbox.h” 好了。在ui生成的包含有QSpinBox的控件文件中,ui的源代码里面多了一段 HSpinBox QSpinBox

hspinbox.h
包含文件变为"hexspinbox.h"。在Qt Designer中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。

可以在VS2008中编译一下main.ui文件,从ui_main.h源代码中可以知道,引入的控件是: 升级法的缺点是不能在Qt Designer中设置自定义控件自己的特有属性,也不能够绘制自己。这些问题可以用插件法解决。 插件法 1.VS中创建Qt4 Design Plugin 工程,名称叫custom 自动建立如下几个文件: 自定义控件:custom.h,custom.cpp 插件:customplugin.h,customplugin.cpp 源代码如下:

在QtCreator中使用Opencv2

在Qt Creator中使用Opencv 2.3 分类:数字图像处理Qt2012-04-18 17:21 104人阅读评论(0) 收藏举报打开Qt项目中的.pro文件,添加如下代码 INCLUDEPATH+=D:\OpenCV\opencv\build\include\opencv2\ D:\OpenCV\opencv\build\include\opencv\ D:\OpenCV\opencv\build\include CONFIG(release,debug|release) { LIBS+= D:\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_contrib231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_core231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_flann231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_gpu231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_legacy231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ml231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_objdetect231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ts231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_video231.lib

QT界面开发

1Qt4界面开发 1.1Q t历史 Qt是一个用于桌面系统和嵌入式开发的跨平台应用程序框架。它包括一个直观的API 和一个丰富的类库,以及用于GUI开发和国际化的集成工具,另外它支持Java?和C++开发。Qt让企业无须重新编写源代码,便可以构建运行在不同桌面操作系统和嵌入式设备上的软件应用程序。 Qt框架最早可公开获取是在1995年5月。最初是由Haavard Nord(TrollTech公司的首席执行官)和Eirik Chambe-Eng(TrollTech公司的董事会主席)。Haavard和Eirik 最早在特隆赫姆的挪威技术学院相遇,在那里他们双双获得了计算机科学硕士学位。 早在1991年,Haavard 就开始写一些最终成为Qt的类,并和 Eirik合力设计。在接下来的一年,Eirik提出了“信号和槽”的思想,一个现在已经被一些其他套装工具包含简单但功能强大的GUI编程范式。Haavard 接受了这一思想并手工生成了这一思想的代码实现。到1993年,Haavard和Eirik已经完成了Qt的第一个图形内核的开发并能用它来实现一些他们所需的物件。在这一年的年末,Haavard建议他们一起去经商,创建一个“世上最好的C++ GUI框架”。 字母“Q”被选为类的前缀是因为这个字母在Haavard的Emacs字体中看起来很漂亮。受到Xt(the X toolkit)的启发,字母“t”被追加来表示“toolkit”。公司在1994年5月4日成立,起初被命名为“Quasar Technologies”,之后被改名为“Troll Tech”,今天则被称为奇趣科技(Trolltech)。 1995年5月20日,Qt 0.90被上传到https://www.360docs.net/doc/2615885352.html,。六天后,这一发布在comp.os.linux.announce被宣布。这是Qt的第一个公共发行版。Qt可以被用在Windows 和Unix开发中,在两个系统中提供相同的API。Qt从一开始就可以在两种许可协议下获取:一个是商业开发中需要的商业许可协议,一个用于开源开发的自由软件版。 1996年3月,欧洲航天局成为Qt的第一个客户,一下买了十个Qt商业许可。Qt 0.97在同年的5月底发布,1996年9月24日,Qt 1.0发布。到了同年年底,Qt到达了版本1.1;拥有8个客户,每一个都在不同的国家,他们购买了18个商业许可。 Qt 1.2 在1997年4月发布。Matthias Ettrich利用Qt构建KDE的决定帮助Qt成为Linux C++ GUI 开发的实际标准,1997年9月Qt 1.3发布。 1998年9月,Qt 1的最后一个主要发行版1.40发布。Qt 2.0于1999年7月发布。Qt 2有了一个新的开源许可协议,发布许可协议(QPL),遵守开源的定义。1999年8月,Qt赢得了LinuxWorld的“最佳开发库/工具”大奖。 2000年奇趣科技发布了Qtopia核心(后来成为Qt/Embedded)。它被设计用来运行在嵌入式Linux设备上并提供了自己的窗口系统作为X11的一个轻量级代替。现在Qt/X11和Qtopia核心都可以通过GNU通用许可(GPL)获取。到2000年年底,奇趣科技成立了Trolltech Inc.(USA)并且发布了Qtopia的第一个版本,一个移动电话和PDAs应用程序平台。Qtopia赢得了2001和2002年LinuxWorld的“最佳嵌入式 Linux 解决方案”大奖,

QtCreator快捷键(自整理)

QtCreator常用快捷键(界面操作) Win + D 显示桌面 Alt + 0 显示、隐藏侧边条 Ctrl + shift + F11 全屏 Ctrl + e,+ 0 删除所有的分栏 Ctrl + e,+1 删除当前的分栏 Ctrl + e后松开再按2 添加上下布局的分栏 Ctrl + e后松开再按3 添加左右布局的分栏 Ctrl + e后松开再按4 打开新窗口 Ctrl + W 关闭当前文件 Ctrl + F4 关闭其他文件 Ctrl + Shift + W 关闭所有文件 Ctrl(按住)+ Tab 快速切换已打开的文件 Ctril+num 切换功能(1:欢迎,2:编辑,3:设计,4:debug,5:项目,6:分析,7:帮助)Alt + num 切换下部窗口(1:问题,2:搜索结果,3:应用程序输出,4:编译输出) Ctrl ++ 放大 Ctrl -- 缩小

QtCreator常用快捷键(代码编辑) Shift + Alt +R ui设计器中预览 Ctrl + H 水平布局Horizon Ctrl + L 垂直布局 Ctrl + G 栅格布局Grid Ctrl + J 调整大小 按F2 快速切换到光标选中对象的源码 按F4 在头文件(.h)和实现文件(.cpp) 之间进行切换。 按Shift + F4 在ui与.h或.cpp间切换 按Ctrl + B 构建项目 按Ctrl + R 运行项目 按Ctrl + / 注释/取消注释选定内容。 按Ctrl + i 自动缩进选中代码。 按Alt+ Enter 快速添加方法实体(.cpp)声明, 按Ctrl + Shift + R 修改变量名,并应用到所有使用该变量的地方。(局部变量时,多行同步编辑) Alt + U 大写变为小写 Alt + Shift + U 小写变为大写 Ctrl + F 查找 Ctrl + Shift + F 高级查找 F3 查找下一个 Shift + F3 查找前一个 Ctrl + shift + U 相当于高级查找 Ctrl + K 定位 按Alt + left 后退 按Alt + right 前进 按Ctrl + M 添加/删除书签, 按Ctrl + . 查找并移动到下一个标签 按Ctrl +,查找并移动到上一个标签 Ctrl + shift + up 将当前行的代码向上移动一行。 Ctrl + shift + down 将当前行的代码向下移动一行。 Ctrl + Alt + Down 向下复制本行 Ctrl + Alt + Up 向上复制本行 Ctrl + U 本快内容全选 Ctrl + < 折叠 Ctrl + > 展开 Ctrl + ] 移到段落末尾 Ctrl + [ 移到段落开头 Ctrl + } 选中到段落末尾 Ctrl + } 选中到段落开头

qt自定义窗口的标题栏

因为标题栏属于窗口管理器控制,也就受限于操作系统,所以直接利用Qt来修改是不可行的! 通常情况下利用Qt我们 可以自定义标题栏,这里提供一个简单的例子! 例子比较简,大致思路是正常创建窗口后,屏蔽标题栏,通过布局将一个QLabel和三个按钮构成一个“标题栏” 放置在顶端(视个人喜好,位置可以任意放置),重新实现必要的事件。 下面分步骤进行:

1. 创建窗口,屏蔽标题栏 例子中是创建了一个MainWindow窗口,构造过程中传入Qt::FramelessWindowHint 参数. customTitleBar::customTitleBar(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, Qt::FramelessWindowHint) { ui.setupUi(this); ui.menuBar->hide(); ui.statusBar->hide(); ...... } 2. 将自定义的“标题栏”放入窗口中 这里我们直接用QDeisgner进行设计,设计完成后利用布局将其置于顶端即可.

3. 事件处理在这里我们只是简单实现鼠标操作窗口的放大、缩小和移动, 所以只重写鼠标事件: 单击、释放、双击和移动。 view plaincopy to clipboardprint? 1./* 2. QRect rect = ui.titleFrame->frameRect(); 3. if(rect.contains(event->pos())); 4.这两句就是用于判断鼠标位置是否落在“标题栏”内。 5.*/ 6.void Qt_Test::mousePressEvent(QMouseEvent *event) 7.{ 8. if(event->button() == Qt::LeftButton) 9. { 10. dragPosition = event->globalPos() - frameGeometry().topLeft(); 11.

Qt 编写多窗口程序

编写多窗口程序 版权声明 该文章原创于Qt爱好者社区(https://www.360docs.net/doc/2615885352.html,),作者yafeilinux,转载请注明出处! 导语 程序要实现的功能是:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 程序里我们先建立一个工程,设计主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。 在这一篇还会涉及到代码里中文字符串显示的问题。 目录 一、添加主窗口 二、代码中的中文显示 三、添加登录对话框 四、使用自定义的对话框类 正文 一、添加主窗口 1.我们打开Qt Creator,新建Qt Gui应用,项目名称设置为“nWindows”,在类信息界面保持基类为QMainWindow,类名为MainWindow,这样将会生成一个主窗口界面。 2.完成项目创建后,打开mainwindow.ui文件进入设计模式,向界面上拖入一个Push Button,然后对其双击并修改显示文本为“按钮”,如下图所示。

3.现在运行程序,发现中文可以正常显示。在设计模式可以对界面进行更改,那么使用代码也可以完成相同的功能,下面就添加代码来更改按钮的显示文本。 二、代码中的中文显示 1.我们点击Qt Creator左侧的“编辑”按钮进入编辑模式,然后双击mainwindow.cpp文件对其进行编辑。在构造函数MainWindow()中添加代码: MainWindow::MainWindow(QWidget*parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->pushButton->setText("新窗口");//将界面上按钮的显示文本更改为“新窗口”} 这里的ui对象就是界面文件对应的类的对象,在mainwindow.h文件中对其进行了定义,我们可以通过它来访问设计模式添加到界面上的部件。前面添加的按钮部件Push Button,在其属性面板上可以看到它的objectName属性的默认值为pushButton,这里就是通过这个属性来获取部件对象的。 我们使用了QPushButton类的setText()函数来设置按钮的显示文本,现在运行程序,效果如下图所示。

Qt界面如何布局

关于Qt界面中对于相关控件进行布局管理 在用Qt进行用户界面应用程序的编程时,建议通过编写相关代码来生成和维护Qt控件,而不要用Qt Designer。这时对相应的Qt控件进行布局管理显得尤为重要。 常见的三种布局方式: 网格布局:QGridLayout 水平布局:QHBoxLayout 垂直布局:QVBoxLayout 步骤: 1)以单个的Qt控件为单位,先进行子块布局,分别对各个子块进行布局。 2)以步骤1)中的子块为单位,进行全局布局。 例如:我们要完成如下样式的Qt界面,整个Qt界面有ABCDEFXYZ共计9个Qt控件。 方法1: 1)用“网格布局”对ABCDEF(子块1)进行布局 QGridLayout *leftLay=new QGridLayout; 用“垂直布局”对XYZ(子块2)进行布局 QVBoxLayout *rightLay=new QVBoxLayout; 2)用“水平布局”对子块1(ABCDEF)、子块2(XYZ)进行全局布局 QHBoxLayout *mainLay=new QHBoxLayout; mainLay->addLayout(leftLay); mainLay->addLayout(rightLay); 方法2: 1)用“水平布局”对AB(子块1)进行布局 用“水平布局”对CD(子块2)进行布局 2)用“垂直布局”对子块1(AB)、子块2(CD)、E、F进行布局,形成子块3(ABCDEF)。3)用“垂直布局”对XYZ(子块4)进行布局 4)用“水平布局”对子块3(ABCDEF)、子块4(XYZ)进行全部布局

方法1: QGridLayout *leftLay=new QGridLayout; leftLay->addWidget(hostLabel,0,0); leftLay->addWidget(hostLineEdit,0,1); leftLay->addWidget(portLabel,1,0); leftLay->addWidget(portLineEdit,1,1); leftLay->addWidget(myCheckBox,2,0,1,2); leftLay->addWidget(myListWidget,3,0,1,2); leftLay->addWidget(msgLabel,4,0,1,2); QVBoxLayout *rightLay=new QVBoxLayout; rightLay->addWidget(logButton); rightLay->addWidget(sendButton); rightLay->addWidget(linkButton); QHBoxLayout *mainLay=new QHBoxLayout; mainLay->addLayout(leftLay); mainLay->addLayout(rightLay); setLayout(mainLay);

Qt基础教程之自定义对话框及调用方法

在一个应用程序设计中,为了实现一些特定的功能,必领设计自定义对话框。 自定义对话框的设计一般从 QDialog 继承,并且可以采用UI设计器可视化地设计对话框。对话框的调用一般包括创建对话框、传递数据给对话框、显示对话框获取输入、判断对话框单击按钮的返回类型、获取对话框输入数据等过程。 本节将通过实例 samp6_2 来详细介绍这些原理。图 1 是实例 samp6_2 的主窗口,及其设置表格行列数的对话框。 图 1 实例 samp6_2 主窗口及其设置表格行列数的对话框 主窗口采用 QTableView 和 QStandardltemModel、QltemSelectionModel 构成一个通用的数据表格编辑器,设计了 3 个对话框,分别具有不同的功能,并且展示对话框不同调用方式的特点: ?设置表格行列数对话框 QWDialogSize 该对话框每次动态创建,以模态方式显示(必须关闭此对话框才可以返回主窗口操作),对话框关闭后获取返回值,用于设置主窗口的表格行数和列数,并且删除对话框对象,释放内存。 这种对话框创建和调用方式适用于比较简单,不需要从主窗口传递大量数据做初始化的对话框,调用后删除对话框对象可以节约内存。

?设置表头标题对话框 QWDialogHeaders 图 2 是设置表格表头标题的对话框,该对话框在父窗口(本例中就是主窗口)存续期间只创建一次,创建时传递表格表头字符串列表给对话框,在对话框里编辑表头标题后,主窗口获取编辑之后的表头标题。 图 2 设置表格表头标题对话框 注意,对话框以模态方式显示,关闭后只是隐藏,并不删除对象,下次再调用时只是打开己创建的对话框对象。 这种创建和调用方式适用于比较复杂的对话框,需要从父窗口传递大量数据做对话框初始化。下次调用时不需要重复初始化,能提高对话框调用速度,但是会一直占用内存,直到父窗口删除时,对话框才从内存中删除。 ?单元格定位与文字设置对话框QWDialogLocate 图 3 是单元格定位和文字设置对话框,该对话框以非模态方式调用,显示对话框时还可以对主窗口进行操作,对话框只是浮动在窗口上方。在对话框里可以定位主窗口表格的某个单元格并设置其文字内容,在主窗口上的表格中单击鼠标时,单元格的行号、列号也会更新在对话框中。对话框关闭后将自动删除,释放内存。

如何在Qt中使用自定义数据类型 - zhezhelin - 博客园

如何在Qt中使用自定义数据类型 - zhezhelin - 博 客园 如何在Qt中使用自定义数据类型 Q_DECLARE_METATYPE,Qt自定义类型 这里我们使用下面这个struct来做说明(这里不管是struct还是class都一样): 复制代码 QVariant 为了能在QVariant中使用自定义数据类型做,需要使用 Q_DECLARE_METATYPE()来向Qt的元系统声明这个自定义类型。如下列所示: 复制代码 在作为QVariant传递自定义数据类型时,需要使用QVariant::fromValue()或者qVariantFromValue: 复制代码 为了更方便一点,你可以在自定义类型中定义一个QVariant() 类型转换符: 复制代码 这样我们便可以像下面这样使用了: 复制代码 信号和槽 对于直接连接类型(默认情况下就是直接连接)而言,使用自定义数据类型做信号参数不需要做其他其他处理,就像内置数据类型一样: 复制代码 但在跨线程时如果你还这么做,编译器就会给出警告了: 复制代码 这时我们需要先注册Player: qRegisterMetaType<Player>("Player");

qRegisterMetaType<Player>( ); (上面那个是错误的,除非名字刚好和类名一样) connect(sender, SIGNAL(playerCreated(const Player&)), receiver, SLOT(addPlayer(const Player&))); 复制代码 QDebug 最好是能这样: 复制代码 而不是这样: 复制代码 怎么做呢?我们需要对QDebug<<操作符重载一下: 复制代码 QDataStream 跟上面的QDebug很像,我们也需要重载一下<<操作符: 复制代码 QSettings 为了能在QSettings中使用自定义数据类型,需要让Qt的元系统知道有此类型,就像上面介绍QVariant部分一样,另外还要提供相应的QDataStream操作符,还必须注册这个流操作符: 复制代码 如此处理之后我们就可以像下面这样使用了: 复制代码 复制代码 参考: QString QSettingsPrivate::variantToString(const QVariant &v) { QString result;

win7 qtcreator+opencv安装与配置

Win7(X64/x86)Qt creator OpenCV2.3配置(v2.0) guo8113 说明:对Qt creator、Opencv、mingw不做解释,不懂自己查资料 1、需要的软件:(所有软件均可联系本人) QtCreator2.3下载地址:qt官网 qt-win-opensource-4.8.4-mingw(qt官网下载) MinGW-gcc440_1(经测试3.X的版本是安装不成功的,我在这上面最少浪费了半天时间)OpenCV-2.3.1-win-superpack cmake-2.8.10.2-win32-x86 https://www.360docs.net/doc/2615885352.html,/cmake/resources/software.html 2、软件安装:所有软件安装到C盘根目录下,切记不可有中文目录 ?解压或安装MinGW-gcc440_1,至C盘c:\mingw 添加系统环境变量“计算机->右键属性->高级系统设置-》高级” 在系统环境变量新建:变量名mingw值C:\mingw ?安装cmake

?安装opencv ?安装qt和qtcreator 3、编译与安装 3.1 Cmake生成opencvmakefile 打开cmake配置源码与安装路径 源码路径要包括以下内容

目标路径笔者设置为c:\Qt\opencv2 3.2配置:configure:在下面的选择框选择mingw makefiles,点击finish

3.3生成:点击generate 3.4进入设置好的目标路径执行 在cmd里输入 cd c:\Qt\OpenCV2 输入: mingw32-make 进行编译 等待40分钟左右编译完成:

qtcreator下配置调试器

Windows 7(64位)下Qtcreator配置调试器 邹雲鹏 2015年8月13日星期四 1、简述 对于程序员来说,通过调试器调试程序几乎是必不可缺的内容,然而Qtreator却不像vs那样带有默认的调试器,这就需要我们自己给Qtcreator配置调试器。 2、系统环境及软件版本 1)操作系统:Windows 7(64位)旗舰版; 2)Qt版本:Qt5.4.2 MSVC2010 OpenGL 32bit 3)Qtcreator版本:Qt creator 3.4.1(Based on Qt5.4.2 MSVC2010 OpenGL 32bit) 4)调试器版本:Windows Driver Kit Version 7.1.0 3、软件下载地址及安装方法 1)Qt5.4.2 MSVC2010 OpenGL 32bit (a)下载地址: http://download.qt.io/archive/qt/5.4/5.4.2/ 下载软件名称为:qt-opensource-windows-x86-msvc2010_opengl-5.4.2.exe (b)直接双击进行安装。安装路径可自己选择,其余均按默认安装直至安装完成。此版本自带有Qtcreator,在Windows所有程序->qt5.4里已经能找到 Qtcreator。 (c)打开Qtcreator,点击工具->选项,点击左侧的构建和运行,在Qt Version 里面已经可以自动检测到Qt5.4.2 MSVC2010 OpenGL 32bit,如图下所示:

(d)在构件套件(kit)里也可以自动检测到Desktop Qt5.4.2 MSVC2010 OpenGL32bit,但是调试器中为None,即调试器未设置。此时是不能进行程序调 试的。所以需要我们安装一个可用的调试器。 2)调试器Windows Driver Kit Version 7.1.0安装 (a)下载地址: https://https://www.360docs.net/doc/2615885352.html,/en-us/download/confirmation.aspx?id=11800 (b)解压或用虚拟光驱打开,双击KitSetup.exe进行安装。 (c)待出现下图界面后勾选Debugging Tools for Windows,点击OK,然后按默认安装直至安装完成。

安装QtCreator去完成C++第一个程序

安装QtCreator去完成C++第一个程序 选一个利器 工欲善其事,必先利其器。选一个好用又流行的的编程工具很重要。软件编程工具现在都叫做IDE—–集成开发环境,能帮我们做很多事。有人愿意手动写makefile来自己管理源文件,很好,但是makefile对新手来说跟天书一样,很容易被打击得没兴趣了。makefile 应该学吗?应该!但是,其学习时机应该是在完成一个比较复杂的项目之后,此时对项目的组织,源码管理、依赖关系等有了一定认识,再学makefile就顺风顺水了。所以我们现在还是老老实实选一个IDE吧。支持跨平台的IDE有:QtC++reator,Code::Blocks,Dev C++,eclipse CDT,Netbeans等。但是最好用的,以我多年的经验来说,首推QtCreator,我也不想多叨叨,你自己都对比一下就知道了,反正都是免费的。 QtCreator安装 QtCreator在三大平台上都是一样的界面。但QtCreator在中文Windows下有个问题,控制台中文乱码。你创建的控制台程序输出中文时是乱码。由于QtCreator对源码文件的默认编码是UTF8,而控制台中的字符编码是按GB2312解释的,所以就乱了。要消除也很简单,把源码的编码改成GB2312就行了。或者不要输出中文字符。如下图: 第一个程序 万仞高台,起于垒土。要成为C++高手,还得从C开始。要写程序,先建C工程,下图是已建好的QTCreator工程: 可以看到简单的一个工程也已经有几个文件了。pro文件是工程文件,用于保存工程的信息,不要动它。Sources文件夹不是一个真正的文件夹,只是一个分组。main.c是源码文件。main.c文件不是空的,而是一个HelloWorld程序,这是IDE为我们做的,你可以把文件删掉自己重新加,效果也是一样。这个程序就做了一件事:输出一段文本:Hello world。

Qt04使用Qt 设计师创建主窗口应用

实验4 使用Qt 设计师创建主窗口应用 4.1. 创建主窗体 使用Qt设计师来创建主窗口应用是非常方便的,其步骤与使用代码创建基本一样。 1.选择模板 首先,创建一个窗体,选择“Main Window”模板,创建一个空的主窗体,如下图: 2.创建资源 在资源浏览器中,点击编辑资源,如下图所示:

我们将要在程序中使用图标资源,因此在资源编辑对话框中,点击新建资源,首先创建资源文件,我们就创建一个名为resource.qrc的资源文件,然后在编辑区中,再添加前缀,我们以“\”作为资源的前缀,图标文件我们都放在images目录下,然后添加图标文件将该目录下的所有文件添加即可,如下图所示: 完成之后,我们可以在资源浏览器中看到添加的各个图标资源,如下图所示: 3.创建动作 在动作编辑器中,点击新建动作,进行动作的创建,在此过程中,可以设置动作的文本(显示在菜单项上的文本),对象名称,工具提示(鼠标放在动作上时显示的提示信息),图标(也就是浏览资源管理器中的资源,选择适当的图标资源),快捷键(鼠标点击快捷键区域,然后按下希望设置的快捷键即可),如下图所示:我们创建了一个newAction动作,对应“文件”菜单下的“新建”菜单项。

通过同样的方式,我们将程序中用到的所有动作创建完成,如下图: 4.将动作添加到工具栏和菜单上 首先创建工具栏,在主窗口中右键单击即可在弹出菜单中选择“添加工具栏”来添加,如下图: 要将动作添加到菜单和工具栏上,还需要创建菜单,这通过在主窗口中的“在这里输入”之处输入菜单的文本,并修改菜单的objectName即可,有了菜单和工具栏,就可以将动作添加到菜单和工具栏上了,这很简单,只要从动作编辑器中拖动动作放到相应的菜单和工具栏上即可,摆放动作的时候,可以根据需要插入分隔符,最终的结果如下图所示(注,菜单上的动作没有显示出来,但在对象查看器中可以看到已经添加到菜单上了):

相关文档
最新文档