【翻译】Qt Designer的四种编辑模式

17 篇文章 27 订阅

Qt 设计器的编辑模式

原文链接:https://doc.qt.io/qt-6/designer-editing-mode.html

Qt 设计器提供了四种编辑模式: 窗口部件编辑模式、信号/槽编辑模式、伙伴编辑模式和 Tab 顺序编辑模式。在使用 Qt 设计器时,您将始终处于以下四种模式之一。要在模式之间切换,只需从“编辑”菜单或工具栏中选择它。下表进一步详细描述了这些模式。

在这里插入图片描述

编辑模式
img窗口布局编辑模式是Qt Designer的默认模式,可以改变窗口部件的布局、编辑部件属性等,若在其它模式下,可以使用F3快速切换。
img信号/槽编辑 模式下,可以通过Qt 的信号和信号槽机制将不同的部件关联到一起。模式切换快捷键为F4。
img伙伴编辑模式下, 伙伴部件可以分配到标签控件,使其正确处理键盘焦点。
在这里插入图片描述Tab顺序编辑模式下, 我们可以设置键盘进行Tab切换的键盘焦点切换顺序。

窗口部件编辑模式(Widget Editing Mode)

在这里插入图片描述

在 Widget 编辑模式下,可以从窗口部件盒将部件对象拖动到窗体界面,然后编辑、缩放、拖动位置、甚至在窗体间拖拽。对象属性可以进行即所见即所得的交互式编辑。编辑界面简单且直观,但不失为强大的Qt布局工具。

打开文件菜单并选择 新建,或者使用Ctrl + N快捷键,即可创建新窗体。打开文件菜单并选择 打开,或者使用Ctrl + O快捷键,即可打开并编辑窗体。

通过从文件菜单中选择另存为...选项来随时保存窗体文件。Qt Designer保存的 UI 文件包含有关所使用对象的信息,以及它们之间信号和槽关联的任何细节。

编辑窗体

窗口部件盒(Widget Box)即Qt Designer左侧的部件库

在这里插入图片描述

默认情况下,新窗体在窗口部件编辑模式下打开。要从其它模式切换到此编辑模式,从编辑菜单编辑窗口部件或按 F3键快速切换。

窗口部件盒中的部件对象拖动到窗体界面预期的位置即可。只要部件对象在窗体中,即可通过鼠标拖动、Ctrl加方向键(像素级移动)拖动它们。至于选中部件对象则可以通过鼠标左键单击或者Tab键切换选中部件对象来完成。

窗口部件盒包含窗体设计所需的部件对象,并对其分门别类。需要多准备的对象是容器类(Container)部件。这将在在Qt Designer中使用容器章节进行详细说明。

选择部件对象

选中窗体中的部件对象有如下方式:

  • 单选:直接鼠标单击窗体中的部件对象,选中后会有控制操作的小点显示
  • 多选:鼠标划区域或按住Ctrl键单击所要选中的多个部件对象
  • 在布局中移动某个小部件,按住鼠标拖动它的同时按住Shift + Ctrl
  • 通过对象选择器(Object Inspector)选中对象

当某个小部件被选中时,可以对它执行剪切、复制和粘贴等正常的剪贴板操作。所有这些操作都可以根据需要完成或撤销。

有以下快捷方式可供使用:

操作快捷键描述剪切
剪切Ctrl+X将选定的对象剪切到剪贴板
拷贝Ctrl+C将选定的对象复制到剪贴板
粘贴Ctrl+V将剪贴板中的对象粘贴到窗体上
删除Delete删除所选对象
克隆对象Ctrl+拖动 (鼠标左键)拖动复制选中对象或对象组的副本
预览Ctrl+R显示窗体的预览

上面的所有操作(除了克隆)都可以通过 编辑 菜单及右键菜单来访问。这些菜单还提供了用于布局对象的函数,以及用于选择表单上所有对象的 Select All 函数。

部件不是唯一的对象; 您可以根据需要任意制作它们的多个副本。要快速复制一个部件,您可以按住 Ctrl 键并拖动它来克隆它。部件可以比剪贴板操作更快地复制和放置在窗体上。

拖放

Qt Designer 继承了Qt的拖放功能。可以直接将部件对象拖放到窗体中。部件要可以在窗体中克隆副本,按住Ctrl键并拖动部件。最后还可以通过对象选择器将需要的对象轻松嵌套布局。

Qt 设计器允许在窗体之间复制、粘贴和拖动对象的选择。您可以使用此特性创建同一窗体的多个副本,并在每个副本中尝试不同的布局。

属性编辑器(Property Editor)

在这里插入图片描述

属性编辑器始终显示当前选定对象的属性。可用的属性取决于正在编辑的对象,所有部件都具有一些通用的属性,譬如 objectName、对象的内部名称(internal name)和 enabled(本属性决定对象是否可交互)。

属性编辑器还有少数特别的属性:

  • 复合属性(由多个值组成的属性)表示为可扩展的节点,允许对其值进行编辑
  • 包含选择或选择标志的属性通过带有复选项的组合框进行编辑
  • 一些丰富的数据类型属性也可以通过属性面板控制,如 调色板QPalette ,当编辑改属性时会弹出编辑调色板对话框。QLabelButton 一类的部件都有一个 text属性,该属性可直接双击部件或选中部件后按F2进行编辑。Qt Designer使用转义字符来处理换行(\n)及\,使其在文本中正常显示。编辑状态下使用右键菜单同样可以插入换行符。

在这里插入图片描述

在这里插入图片描述

动态属性

属性编辑器还可用于向标准 Qt 部件和窗体(Form)本身添加新的动态属性。自 Qt 4.4以来,可以通过属性编辑器工具栏添加和删除动态属性,如下图所示。

在这里插入图片描述

img

要添加动态属性,请单击“添加”按钮在这里插入图片描述。要删除它,则单击“删除”按钮在这里插入图片描述即可。通过“配置”按钮在这里插入图片描述可以让属性按字母顺序排序及更改颜色组。

对象检查器

在这里插入图片描述

对象检查器显示当前窗体中所有部件对象及层级关系。点击部件名字左边的箭头可显示部件或布局的子对象。

窗体中的每个部件对象都可通过点击对象检查器中对应的项来选中。右键点击同样可以打开该对象的右键操作菜单。这些功能在存在层叠对象的时候非常实用。查找某个对象可以通过对象检查器中的Filter来进行筛选查找。

自Qt4.4起,双击对象名可以对其进行修改。

自Qt4.5起,对象选择器显示容器(container)的布局状态,如果布局有问题,则显示其左侧显示受破坏的布局图标在这里插入图片描述

信号和插槽编辑模式

在Qt Designer的信号和插槽模式下,可以使用Qt的信号和插槽机制将对象关联在一起。Qt Designer中可以通过非常直观的方式操作对象间的关联。保存窗体后所有关联均会保存到ui文件中,以保证在生成项目时可用。

有关 Qt 信号和 slots 机制的更多信息,请参考 Signals 和 Slots 官方文档

关联对象

关联对象之前,首先要切换到信号/槽编辑模式。通过编辑-编辑信号/槽F4快捷键均可实现。通过工具栏上的在这里插入图片描述也可以完成模式切换。

理论上窗体中所有部件对象皆可相互关联,然而间隔符只是为布局提供间距,其不能与其他对象关联。

对象高亮显示

在这里插入图片描述

当鼠标经过对象时,该对象自动高亮显示,如上图。

在这里插入图片描述

鼠标放在对象上,按住左键不放拖动到要关联的对象上,中间会出现一个箭头,如上图所示。至此,说明两者可以进行信号和槽的连接。释放鼠标后弹出配置连接对话框,如下图所示。

在这里插入图片描述

对话框中显示源对象的可用信号和目标对象的可用槽。

在这里插入图片描述

若要进行关联请选择发送的信号和接收的槽,然后ok保存,如上图。否则请Cancel退出并关闭对话框。

注意

如果选中显示从QWidget继承的信号和槽复选框,则显示所有可用的信号和槽。否则,从 QWidget 继承的信号和槽将被隐藏。

表单中的对象 可以建立多个关联;也可以将窗体本身与对象之间建立信号和槽的关联。因此, 许多对话框中的信号和槽的关联完全可以在Qt Designer中进行配置。

与窗体关联

在这里插入图片描述

若将部件对象与窗体本身进行关联,只需拖动鼠标到窗体空白处释放鼠标即可。目标端变为电气“接地”符号,如上图。

编辑和删除关联

在这里插入图片描述

通常情况下,关联路径一旦建立,其两端会有两个标签分别显示源对象的信号和目标对象的槽,中间则有一条带箭头的连接线,由源对象指向目标对象。当鼠标经过两端的红色联结点时会变成手型,拖动可改变标签的位置。

信号/槽编辑器

信号和槽的关联建立后同样可以编辑。所有的信号/槽关联信息均可以在信号/槽编辑器中以列表的形式展现。若要进行编辑,可以双击联结路径或其中一个标签打开编辑对话框。

在这里插入图片描述

删除关联

信号和槽的关联可以通过点击关联路径选择。选中后可以Delete键删除,也可以通过信号/槽编辑器中的“删除”按钮在这里插入图片描述删除。

伙伴编辑模式(Buddy Editing Mode)

在这里插入图片描述

Qt Designer 最实用的功能之一就是对伙伴部件(buddy widget)的支持。某个QLabel部件绑定了组合快捷键并被使用时,与之关联的伙伴部件(buddy widget)接受输入焦点。伙伴(buddy)的概念在Qt的模型/视图框架中同样适用。

将标签(Lable)联结伙伴部件(Buddy widget)

打开编辑菜单选择伙伴编辑,进入伙伴编辑模式。此模式展示窗体部件的方式类似于信号/槽编辑模式。只不过此模式下的联结必须以lable标签部件开始。理想情况下,每个绑定快捷键的label标签组件都要与相应的部件(如QLineEdit)建立伙伴关系。

建立伙伴关系

在这里插入图片描述

单击某个label,拖动鼠标到窗体中的目标部件,释放鼠标,如此即可建立两者的伙伴关系。关联后快捷键将被给到伙伴部件。预览窗体可以测试每个label与其伙伴部件直接的关联。

删除伙伴关系

每个label只能定义一个伙伴部件,要改变其伙伴关系,必然要先删除现有的伙伴关系后才能与其建立新的伙伴关系。

label与其伙伴部件的关联删除方式与信号/槽编辑模式下信号与槽的关联方式相同:选中联结路径线(选中后为红色),Delete键即可删除。当然,此操作不会也不能改变任何标签及其伙伴关联。

Tab顺序编辑模式

在这里插入图片描述

很多用户都期望只使用键盘就能在各个部件间来回切换并控制它们。Qt允许用户使用TabShift + Tab来完成切换。默认的Tab顺序是基于部件的构建顺序的(简单来说谁被拖进来的早谁的Tab顺序就靠前),虽然这种排序方式对多数用户来说已经够用,但是从实际开发以及软件易用性优化来说,该编辑模式提供了更好的解决方案。

设置Tab顺序

打开编辑菜单选择编辑Tab顺序,进入Tab顺序编辑模式。该模式下,窗体中所有输入及操作部件上都会显示一个数字来表示其目前的Tab顺序。进入Tab顺序编辑模式后第1个被点击的部件顺序号就变为了数字1,第2个被点击的就变为了数字2,以此类推即可完成Tab顺序的编辑。

当前设置的Tab顺序为红色,已经设置了Tab顺序的数字将变为绿色,尚未被点击的数字将保持蓝色。

如果设置错误,只需双击窗体空白处(不要点到数字上就好啦),或者右键菜单选择重新开始回到初始状态。

在这里插入图片描述

如果窗体上有很多部件,并且希望从某个中间数字顺序开始排序,按住Ctrl键并在其开始数字上打开右键菜单并选择从这里开始,如下图,在数字4上打开右键菜单,则Tab排序从当前部件及当前Tab顺序4开始,再点击下一个数字后其顺序数字会变成5,以此类推。

在这里插入图片描述

至此,Qt Designer的4种编辑模式已经介绍完毕,你是否已经get到其精髓和重点?如有表诉不当的地方还请留言指正哦~

Qt中使用Qt Designer模式来处理按钮的点击事件,你可以按照以下步骤进行操作: 1. 打开Qt Designer,创建一个新的窗口或者打开一个已有的窗口。 2. 在左侧的工具栏中找到 "Button"(按钮)组件,将其拖放到窗口中。 3. 选中新添加的按钮组件,在右侧的属性编辑器中可以设置按钮的属性,例如文本、图标等。 4. 在左侧的对象浏览器中,找到新添加的按钮组件,并右键单击它。选择 "Go to slot..."(转到槽函数)选项。 5. 在弹出的对话框中,选择 "clicked()" 信号,并点击 "OK"。 6. Qt Creator会自动生成一个槽函数,并打开对应的源文件。 7. 在生成的槽函数中,你可以编写处理按钮点击事件的代码。 以下是一个示例: ```cpp #include <QtWidgets> class MyWindow : public QMainWindow { Q_OBJECT public: MyWindow(QWidget *parent = nullptr) : QMainWindow(parent) { QPushButton *button = new QPushButton("Click me", this); connect(button, &QPushButton::clicked, this, &MyWindow::handleButtonClicked); } public slots: void handleButtonClicked() { // 在这里编写按钮点击事件的处理代码 qDebug() << "Button clicked!"; } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWindow window; window.show(); return app.exec(); } #include "main.moc" ``` 在上面的示例中,我们创建了一个新的窗口,并添加了一个按钮。在构造函数中,我们使用 `connect()` 函数将按钮的 `clicked()` 信号连接到槽函数 `handleButtonClicked()`。在槽函数中,我们使用 `qDebug()` 打印一条消息来表示按钮被点击了。 你可以根据自己的需求,在 `handleButtonClicked()` 函数中编写具体的按钮点击事件处理代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值