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 代码的世界。

相关内容

热门资讯

个... 在讲故事之前,我们先来了解一下韩国的反粉们。反组织的盛行是韩国娱乐圈的一个独特现象。 虽然很多韩国明...
(... 今天有新股!赢得彩票不仅需要运气,还需要运气。我们还需要新知识、新文物的帮助!祝你中彩票!瓜宝宠物:...
我... 如何使用论坛推广软件进行推广我们应该如何使用论坛推广软件来推广论坛呢? 在具体实施前策划一系列的论坛...
F... FTP 是一个非常基本的文件传输协议。 多年来它一直被用作许多中小型项目或初级项目的代码部署方式。 ...
Q... 我们知道QT是一个用于图形界面设计的第三方库。 它功能非常强大,可以配合python、C++等语言提...
四... 与单个签名相比,连续签名具有更强的艺术感。 它能充分展现一个人的审美情趣和创造力有没有设计名字的软件...
局... 以下为文字版:什么是NASNAS,Network Attached Storage,翻译成中文为“网...
央... 浏览现代互联网需要许多技能,其中之一就是知道如何下载软件。即使是上网十多年的知识分子,在下载软件时也...
打... 生活中,我们每个人都有自己的“代号”,所以我们的名字也是外出时的一张名片。在许多重要的社交和商务场合...
北... 北京国税2018年4月纳税期限截止日期为4月18日。 报告复印和清卡必须在18日前完成。 请大家合理...
周... 据360公司消息,美国东部时间4月13日,第27届“哈佛中国论坛”在美国哈佛大学举行。 360集团...
在... 最全的无基础办公入门教程,涵盖Word、PPT、Excel,限时免费。 文末有获取方法,按照步骤自动...
学... 20年经验办公运营高手的零基础入门教程:200集视频+插件,免费送给你。 文末有获取方法,按照步骤自...
酷... 即使你的手机是旗舰机,也难逃打开应用看几秒广告的命运。 现在大多数软件在启动时都会显示广告。 尽管很...
行... 本期亮点上期节目我们给大家分享了医疗信息化行业巨大的市场空间。 本期节目深入行业,看看行业公司威宁健...
为... 为什么在市场上总是白干甚至赔钱?赵哥:1.没有建立自己的交易系统2、没有严格执行操作纪律3、缺乏良好...
邮... 群发邮件平台是外贸、跨境电商、海外企业常用的营销方式。 他以其低成本、高投资回报率赢得了众多企业的青...
移... 事实上,我也是移动存储设备的忠实粉丝。 工作上,我要时刻随身携带大量的文档和图片,随时响应甲方的方案...
腾... 软件适用场景:可以上网的笔记本电脑或者安装有无线网卡的台式电脑。 您自己没有无线路由器,周围没有可用...
灵... 凌云科技11日消息:自2015年8月捷通华盛携手中国国家语言翻译局推出“维汉智能语音翻译”和“凌云维...