Qt 可视化Ui设计

QMainWindow 是主窗口类,主窗口类具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;

QWidget是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持;

QDialog是对话框类,可建立一个基于对话框的界面。

新建项目:Application->Qt Widgets Application

新建项目里面的文件有哪些:

项目管理文件:.pro  存储项目设置的文件

主程序入口文件: main.cpp 实现main()函数的程序文件

头文件:.h

C++源文件: .cpp

C++里任何窗体或界面组件都是用类封装的,一个类一般有一个头文件和源程序文件

界面文件:.ui 一个XML格式存储的窗体上的元件及其布局的文件

下面分别了解这些文件:

1、首先项目管理文件:文件名就是项目的名称

“QT       += core gui”表示项目中加入core gui模块。

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

如果项目中使用到了涉及数据库操作的类就需要用到sql模块,在.pro文件添加这么一句话:

Qt       +=sql

"greaterThan(QT_MAJOR_VERSION, 4): QT += widgets"这是个条件执行语句,表示当Qt主版本大于4时,才加入widgets模块

2、界面文件:双击界面文件(.ui)会出现窗体设计界面

从属性编辑器可以看出类的继承关系:QObject->QWidget->QFrame->Qlabel

组件的字体、对象名称等属性都在右下角属性编辑器里完成

信号和槽可视化关联用最下面的Signals Slots编辑器完成

这样设置表示当按钮btnClose被单击时,执行Widget的close函数,实现关闭窗口的功能

然后对项目进行编译和运行

的确是点击Close就关闭窗口了

3、主函数文件

main()函数时应用程序的入口。它的主要功能时创建应用程序,创建窗口,显示窗口,并运行应用程序,开始应用程序的消息循环和事件处理。

4、窗体相关的文件

4.1 widget.h文件

在创建项目时,选择窗体基类时QWidget,在文件中定义了一个继承自QWidget的类Widget

4.2widget.cpp文件

4.3widget.ui文件

窗体定义界面文件,一个XML文件,定义了窗口上的所有组件的属性设置、布局,及其信号与槽函数的关联等。

4.4ui.widget.h文件

ui.widget.h是在对widget.ui文件编译后生成的一个文件,这个文件会出现在编译后的目录下,不会出现在目录树里

ui_widget.h文件里实现界面功能的类是Ui_Widget。再定义一个类Widget从Ui_Widget继承而来,并定义在namespace Ui里,这样Ui::Widget与widget.h里的类Widget同名,但是用namespace区分开来。所以,界面的Ui::Widget类与文件widget.h里定义的Widget类其实是两个类,但是Qt的处理让用户感觉不到Ui::Widget类的存在,只需要知道在Widget类里用ui指针可以访问可视化界面组件就可以了。

下面再介绍一个例子:

在设计界面组件的时候要设定每个组件独有的objectName

界面组件的层次关系:首先把这些需要的组件拖动到界面内,然后使用容器类Group Box将3个CheckBox放一起,3个Radio Box放一起

布局管理:组件面板有Layouts和Spacers

布局组件

功能

Vertical Layout

垂直方向布局,组件自动在垂直方向上分布

Horizontal Layout

水平方向布局,组件自动在水平方向上分布

Grid Layout

网格状布局,网状布局大小改变时,每个网格的大小都改变

Form Layout

窗体布局,与网格状布局类似,但是只有最右侧的一列网格会改变大小

Horizontal Spacer

一个用于水平分隔的空格

Vertical Spacer

一个用于垂直分隔的空格

使用组件面板里的布局组件设计布局时,先拖放一个布局组件到窗体上,布局组件会以红色边框显示,再往布局里拖放组件。

在设计窗体上方工具栏里各按键:

Edit Widget(F3)

界面设计进入编辑状态,就是正常的设计状态

Edit Signals/Slots(F4)

进入信号与槽的可视化设计状态

Edit Buddies

进入伙伴关系编辑状态,可以设置一个Label与一个组件成为伙伴关系

Edit Tab Order

进入Tab顺序编辑状态,Tab顺序是在键盘上按Tab键时,输入焦点在界面各组件之间跳动的顺序

Lay Out Horizontally(ctrl+H)

将窗体上所选组件水平布局

Lay Out Vertically(ctrl+L)

将窗体上所选组件垂直布局

Lay Out Horizontally in Splitter

将窗体上所选组件用一个分割条进行水平分割布局

Lay Out Vertically in Splitter

将窗体上所选组件用一个分割条进行垂直分割布局

Lay Out in a Form Layout

将窗体上所选组件按窗体布局

Lay Out in a Grid

将窗体上所选组件网格布局

Break Layout

解除窗体上所选组件的布局,也就是打散现有的布局

Adjust Size(ctrl+J)

自动调整所选组件的大小

伙伴关系(Buddy)是指界面上一个Label和一个组件相关联,单击一个Label,按住左键然后拖向一个组件,就建立了伙伴关系。这是为了在程序运行时,在窗体上用快捷键快速将输入焦点切换到某个组件上。

Tab顺序是指在程序运行时,按下键盘上的Tab键时输入焦点的移动顺序。

信号(Signal)就是在特定情况下被发射的事件。

槽(Slot)就是对信号响应的函数。

信号与槽关联:

connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

(1)一个信号可以连接多个槽

(2)多个信号可以连接同一个槽

(3)一个信号可以连接另外一个信号

(4)信号与槽的参数个数和类型需要一致,至少信号的参数不能少与槽的参数。

(5)在使用信号与槽的类中,必须在类的定义中加入宏Q_OBJECT.

(6)当一个信号被发射时,与其关联的槽函数被立即执行,当所有与信号关联的槽函数被执行完毕后,才会执行发射信号处后面的代码。

可视化生成槽函数原型和框架:

还是上面的例子:

1、字体样式设置

选中chkBoxUnder组件,右键转到槽,选择clicked(bool)

 

OK后在头文件中自动生成如下几行:

在.cpp文件中手动添加几行:

运行一下,几种功能也有效果了:

 

 

 

2、字体颜色设置

在.h文件中定义槽函数,有一种办法可以在.cpp文件中直接自动生成函数框架:

手敲内容:自定义槽函数

因为槽函数是自定义的的,所以不会自动与RadioButton的clicked()事件关联,需要在Dialog构造函数中手工进行关联:

运行展示:

 

3、三个按钮的功能设计

界面上常见的按钮:确定、取消、退出

这次用可视化的方式将信号与槽进行连接,很简单,只需点击上方信号与槽连接按钮,然后点击要匹配的按钮按住左键进行拖拽,出现如下图的对话框,进行点选,如果没有选项,只需把下方的勾打上:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41989.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这么可爱的彩虹屁老婆,真的不想“娶”一个放桌面上吗?

💧这么可爱的 彩 虹 屁 老 婆 \color{#FF1493}{彩虹屁老婆} 彩虹屁老婆,真的不想“娶”一个放桌面上吗?💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&#x1f39…

Python中Oracle的连接、增删改查

1、下载格式为whl的cx_Oracle文件 文件名:cx_Oracle‑7.3.0‑cp37‑cp37m‑win_amd64.whl 注意对应cp版本(python版本) 下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle 下载到 D:\software 安装步骤&#…

美因基因冲刺港交所:黄金赛道的“双冠王”

2月18日,中国最大、全球前三的消费级基因检测平台美因基因向港交所递交了IPO申请,拟赴港上市,中信建投国际担任独家保荐人。 据美因基因招股说明书显示,此次IPO募集资金用于:(1)消费级基因检测及…

申宝优配-强者恒强还将继续

周二的行情与预期的保持一致,在日线的修整时间继续延续,同时,连续几天的休整以后,短线指标已经到达了相对的超跌低位,指数也到达了下方强支撑的3586点的边缘.。早盘指数小幅度低开以后快速拉起如期的开始进入反抽行情&…

乡村振兴开发合作联盟成立新闻发布会暨揭牌仪式成功举办

2022年3月18日,乡村振兴开发合作联盟成立新闻发布会暨揭牌仪式在纵横华媒国际总部成功举办。联盟主要负责人、纵横华媒国际董事长马康华,纵横华媒国际副总裁徐凡十、马卢健等领导出席会议并讲话。 本场发布会因疫情防控需要,采取线下线上相结…

申宝公司-市场两级分化谨慎操作

周一A股三大指数集体低开,早盘市场小幅反弹后便开启震荡下挫行情,沪指跌近1%,创业板指跌逾2%;午后A股跌幅继续杀跌,沪指失守3600点,创业板指一度重挫逾3%。沪深两市连续第42个交易日突破万亿规模&#xff1…

2月15日市场游资操作情况以及龙虎榜

2月15日市场知名游资操作以及机构龙虎榜: 1、章盟主 卖出:凯撒旅业 2、赵老哥 买入:天禾股份 卖出:曲江文旅、恒宝股份、泰慕士 3、量化打板 买入:园林股份、全筑股份、诚达药业、杭州园林、康芝药业、瑞鹄模具、浙…

Scrapy框架+Gerapy分布式爬取海外网文章

Scrapy框架Gerapy分布式爬取海外网文章 前言一、Scrapy和Gerapy是什么?1.Scrapy概述2.Scrapy五大基本构成:3.建立爬虫项目整体架构图4.Gerapy概述5.Gerapy用途 二、搭建Scrapy框架1.下载安装Scrapy环境2.建立爬虫项目3.配置Scrapy框架(1)item…

区块链媒体套餐到底怎么样用

如今无论是哪行哪业,互联网技术永远都是尤为重要的一个专用工具。不论是公司还是其他想要做宣传策划,那就需要通过网络这一媒体去进行,不过随着移动互联网的迅速普及化,区块链媒体也慢慢地进入大家的视野,那样区块链媒…

手把手教你用量化做复盘(一)

股市复盘是交易中的重要组成部分,能够帮助交易者更好地了解股市变化,把握未来趋势。 但有时候复盘工作量较大,往往花费大量的时间精力,为帮助掘金用户更好、更快地完成复盘工作,特此推出系列内容:《手把手教…

商业演出站口这类宣传模式适宜中小型企业吗

不一样类型的公司在宣传过程中适宜应用不一样类型的宣传模式,比如有许多知名企业都会采用商业演出站口这类宣传模式,这种类型的宣传模式适合不适合中小型企业呢?此类类型的宣传模式针对中小型企业来讲不太适合应用。 为何商业演出站口这样的方…

绿虫数字藏品一站式服务的运营平台解决方案

受“元宇宙”概念影响,数字藏品正在世界各国掀起一股热潮。 数据显示,在刚刚过去的“国际博物馆日”,国内外十家博物馆、图书馆推出20款数字藏品,总量达2.5万件;同一天,广东多家博物馆陆续在不同平台上线2…

基金牌照在公司宣传中具有的功效怎么样

能够看见这样的情况,有很多企业在宣传过程中关注与展现自身的实力,那在宣传过程中,将股票基金牌照呈现出来具有的功效是不是非常大呢?这一点需看公司在宣传过程里的宣传目地怎样,依据宣传目的不一样股票基金牌照&#…

第二证券|扶持政策频发,教育板块再度爆发,全通教育“20cm”涨停

职业教育概念23日盘中再度活跃,截至发稿,全通教育“20cm”涨停,该股昨日大涨14.4%,盘中一度涨停;世纪鼎利涨超16%,天舟文化、中文在线涨超10%,华媒控股、邦本科技、明牌珠宝、中广天择、陕西金叶…

2022年网络我的网络爬虫学习心得

2022年网络我的网络爬虫学习心得 写在前面一、心得二、爬虫项目中所需要的pip模块1.requests2.bs43.Pandas4.selenium5.Scrapy6.gerapy_auto_extractor 三、简单爬虫实现1.配置环境2.简单爬虫实现(mysql)3.简单爬虫实现(mongo) 四…

星际无限CTO张超受邀参加2020区块链技术和应用峰会

7月31日上午,区块链技术和峰会暨第四届中国区块链开发大赛成果发布会在杭州国际博览中心正式召开。 大会由中国电子技术标准化研究院和杭州市萧山区人民政府主办,中国区块链技术和产业发展论坛、杭州日报报业集团(华媒控股)、钱江…

2021年中国报刊出版行业经营现状及A股上市企业对比分析[图]

一、经营现状 报纸是以刊载新闻和时事评论为主的定期向公众发行的印刷出版物或电子类出版物,是大众传播的重要载体,具有反映和引导社会舆论的功能,近年来中国报纸出版行业营业收入快速增长,2019年中国报纸出版行业营业收入达576.10亿元,较2018年增加了0.2 亿元,同比增长…

华媒:增强网络安全 亡羊补牢、为时未晚

马来西亚《星洲日报》17日刊文称,若要防堵漏洞被骇客利用,或者避免系统漏洞可能导致网络灾难,就必须靠科技界、软件使用者,包括政府和其他用户,共同合作加以防范。 资料图为2017年5月13日,一台位于北京的笔…

无车发展阶段及实践

摘要 在城市经历了过度依赖小汽车带来的交通拥堵、空气污染等负面效应后,全球许多国家和地区正在积极探索适合本地区的无车发展路径和措施。伦敦大学学院劳伊德赖特提出的无车发展图谱,从有限的示范实验到长期的绝对禁用,体现了城市对小汽车使…

华媒舍:新闻媒体软文发布需要考虑消费群体

如何在新闻媒体软文发布过程中拥有更为理想的引流方法,效果想要实现这一点还是合理的,但应注意一定要充分考虑消费群体难题,假如没有考虑到终端产品用户人群难题,新闻媒体软文发布并没有目的性,这样的状态下可以实现的…