QT图形用户界面设计的机理及可视化方法背后的故事
创始人
2026-02-18 15:04:33
0

我们知道QT是一个用于图形界面设计的第三方库。 它功能非常强大,可以配合python、C++等语言提供图形界面库。

在QT中创建应用程序时,从广泛的角度来看,有两个接口。 一种是控制台界面(Console Application),另一种是图形用户界面(Widget Application)。

在QT图形用户界面(GUI)程序创建中,有两种选择:可视化法(在创建应用程序的向导中,勾选生成*.ui文件)和纯代码法(取消勾选生成*.ui文件) 。 今天这篇文章探讨了可视化方法背后的机制。

有名字软件没设计怎么办_有没有设计名字的软件_有名字软件没设计的吗

在QT中,可视化界面设计是由QT Designer软件完成的。 用户只需将控件一一拖放到QWidget界面上并安排好位置即可。 无需编写相关代码。 这些编码任务由Designer在后台自动完成。 。

Designer后台完成代码后,会为程序员提供与外界的接口。 这个接口就是*ui,也就是ui指针。 在 Designer 生成的代码中,定义了命名空间 Ui。 在这个命名空间中,放置了一个类的完整定义。 正是这个类负责创建控件、控制布局和关联的信号槽。

初学者在看这些代码时常常会感到困惑。 一方面,QT背后有一种机制可以将可视化工作转换为实现的代码。 另一方面,C++使用的语法比较深,比如类继承。 、对象指针、命名空间、动态创建对象等都是C++中比较深奥难点的知识点。 清楚地理解这里的机制并不困难。

有名字软件没设计的吗_有名字软件没设计怎么办_有没有设计名字的软件

下面通过一个具体的例子来直观地说明创建图形界面程序的过程,并用伪代码简单易懂地解释其背后的机制。 关键点是提出了中间类(mid_GUI)的概念,它涵盖了设计者(Designer)所做的工作。 设计者会在内部设计一个类。 该类不对外开放,因此一直没有统一的名称。 没有英文资料,各种中文技术博客之间也没有统一。 如果我们拘泥于技术术语,这个类的中文命名将会变得晦涩难懂。 本文从这个类的功能出发,将其命名为“中间类”,非常形象贴切。 从这个名字的字面意思可以看出,该类的功能是充当图形界面和可见图形控件之间的桥梁。 这是脚踏实地、美好的。 理解。 这一命名的提出可以让热爱C++ QT编程的初学者有一个清晰的概念,为学生扫清学习障碍创造良好的条件。

该方案包括三个方面:

1、使用QT Designer(设计器)直观地定义一个QWidge作为base类的表单类Widget,并将QPushButton、QLabel、QLineEdit拖放到界面中。

2、设计者在后台创建一个中间类,包括QPushButton、QLabel、QLineEdit三个。 然后将这个创建的接口耦合类添加为Widget类的新成员。 这个新成员由 Widget 类中的指针 ui 表示。

3、在Widget类的成员函数中,使用ui指针来引用QPushButton、QLabel、QLineEdit这三个ui成员控件,并编写代码来操作这些控件。

用伪代码显示这些任务:

步骤1:选择QWidget类作为基类并创建myWindow自定义类(选中.ui文件选项)。 这是QT程序员根据向导创建的图形界面的类。 Designer并没有创建另一个图形界面,它只是使用这个图形界面,然后创建控件并将它们排列在这个图形界面中。

class myWindow( ) : public QWidgt...
{
public:
....
myWindow( );
~ myWindow( );
private:
....
};

myWindow w;

步骤2:Qt Designer在后台创建一个中间类,并将可视界面上的所有控件作为该类的成员。 这个中间类是设计者内部定义的,与程序员定义的myWindow类不同。 中间类会传入myWindow类的指针,从而在中间类和程序主窗口之间架起一座桥梁。 中级班的名字也是受此启发。

中间类代码表示:

class mid_GUI
{
public:
...
private:
		QPushButton *pushButton;
		QLable *label;
		QLineEdit *lineEdit;
};

步骤3:在myWindow类的定义中,添加一个中间类(mid_GUI *ui)的指针变量作为成员变量。

class myWindow( )
{
public:
....
myWindow( );
~ myWindow( );
private:
mid_GUI *ui;
};

在myWindow的成员函数中,多了一个指向中间类的指针,这意味着中间类在创建对象时需要使用动态创建(new命令)。 在中间类的定义中,使用按钮等控件作为其成员,其类型也是指针类型。

要获取图形界面中控件的代码,例如获取图形界面中的按钮对象,需要经过两层指针。 第一级指的是myWindow成员-ui指针,第二级指的是中间类mid_GUI的成员-指针。 按钮。 这是在可视化界面中引用控件的语法:

ui→pushButton→setText(“click me”);

至此有没有设计名字的软件,设计师(QT Designer)所做的工作就已经交代清楚了。 如果你再深入一点,你可以看到设计者在命名空间中对该类的完整定义:

namespace Ui
{
  	class myWindow: pubilic ui_MyWindow
    {
    	
    };
}

QT软件给设计者在后台定义的内部类赋予与程序员定义的窗口类相同的名称,并用名称控件Ui限定以显示区别。 在程序员定义的类中,自动添加一行代码namespace Ui(class myWindow;),通知设计者在myWindow类中创建的内部类及其命名空间,告诉你Ui命名空间及其包含的名称myWindow 类是由设计者在后台生成的。 不得不说,这种处理方法很容易引起初学者的困惑。 因此,本文给设计者的内部类Ui::myWindow起了一个别名mid_GUI有没有设计名字的软件,以表明这个类不是程序员定义的myWindow类。 QT 架构中的一个大漏洞已被消除。

【结论】

本文回顾了QT Designer协助程序员设计图形界面的机制,并提出了一个重要的别名:中间类(mid_GUI),以帮助初学者消化和理解图形界面创建背后的机制,从而在图形界面中自由漫游。 C++ QT 代码的世界。

相关内容

热门资讯

w... 1. WPS属于办公软件类型。 2. 依据网络百科的查问结果,WPS是金山软件公司自主研发的一款...
W... WPS办公软件是包括Word、Excel、PPT三种文档的软件。 在WPS表格中,咱们经常须要对...
学... 办公软件是现代人上班必无法少的工具,学习办公软件能够提高咱们的上班效率和成果。 学办公软件25节...
抖... 我用的最多的软件有:1、西瓜数据2、微商相册3、Toobigdate4、快剪辑等 短视频经营实时降级...
会... 由关秀英编著的《会声会影12与DV影片前期解决技巧》是一本适用的图书,专为数码视频喜好者设计。 ...
收... 收费的音频剪辑软件有:《快影》、《快剪辑》、《剪印》、《必剪》、《音频剪辑巨匠》等。 1、《快影》 ...
剪... 剪辑音乐的软件有剪映、音乐剪辑、音乐制造工坊、超级音乐编辑器、音频编辑器、音频编辑转换器等等。 1、...
C... CorelDRAW是一款由加拿大渥太华的Corel公司开发的专业矢量图形编辑软件,最后专为Windo...
可... 手机可以剪辑音乐的软件有哪些,置信很多人在生存中都会去下载一些音乐或许音频,有的人想对音频启动编辑,...
C... 答:平面设计是二维制图不同于3D制图,它对CPU、内存、硬盘三大件性能要求要高,CPU必定是多外围多...
罕... 罕用的绘图软件包含Adobe Illustrator、CorelDRAW、Sketch、Figma、...
A... 题主没说是笔记本还是台式机,我都说下 笔记本 外围三大件:CPU、显卡、内存 一、CPU 笔记本关键...
3... 3D友好面设计的区别有: 1.维度不同:3D是指三维设计,平面设计是二维设计。 2.出现成果不同:3...
电... 关于电脑3d绘图软件有哪些,3d绘图软件有哪些这个很多人还不知道,当天来为大家解答以上的疑问,如今让...
3... 建模和3d渲染用什么显卡好用?AMD系列显卡:AMD的显卡更适宜3D建模用,由于A卡图形设计和3D渲...
电... 电脑设计软件有多种,经常出现的包含Photoshop、AutoCAD、Adobe Illustrat...
允... 允许一对一视频聊天的软件有:微信、QQ、Skype和Zoom等。 微信作为一款综合性的社交软件,...
o... office办公软件,蕴含很多个组件,比如Word、Excel、PowerPoint、Outlook...
大... 2009年度新员工入职培训心得体会精选[日期:09-07]我公司2009年度新招聘新员工培训上班业已...
罕... 1. Word 是一款杰出的文字解决工具,宽泛运行于办公室上班中。 其界面直观,易于上手,弱小的...