时间:2016年8月19日 天气:晴:sunny:
Author:冬之晓:dizzy_face:
Email: 347916416@qq.com
MyAppearance:
今天,我在进行Qt编程的时候,关于界面的编制遇到了一些问题,如果一个ComboBox控件的选项直接有关联的话,
如何在已经选择的选项前面加上提示,如何动态的改变ComboBox,如何使用右键菜单。在读别人的代码的过程中发现了这些,
特此记录一下,以防忘记。
为了将所有例子都在一个程序中表示出来,我设计一个简单的对话框,其特点是可以使用右键菜单进行增加条目,如图:
也可以在对应的条目上右键进行删除,如图:
还可以修改每个条目的名字,同时增加几个条目右边的comboBox会随时变化变为对应的数目,而且选择的时候可以在已经选择过的条目出现叉号提示,如图:
为了实现上述功能,我按照以下的几个步骤进行:
程序ui界面的添加
Qt之所以非常适合编写界面程序,是因为它可以方便的进行拖拽控件进行界面逻辑的制定。为了可以使用多个条目,我在程序整体框架上拖拽一个QTreeWidget控件,这个控件允许生成很多子条目,每个子条目上面可以根据不同的列添加对应的控件。然后再添加QAction,我觉得action是一个程序的核心,特别是界面编程,只要把每一个动作的业务逻辑对应好,在主界面的菜单栏和工具栏就可以直接拖动。同时在主界面的中央控件上的右键菜单内部也可以添加动作。本例比较简单,只加上“增加”和“删除”两个动作就好。
自定义comboBox
为了实现comboBox控件单击时显示被选中的条目有提示,同时comboBox自己没有按下时响应的信号,所以我重新实现一个按下时触发的信号,实现时通过实现其父类QWidget的虚函数mousePressEvent(QMouseEvent *event)来响应按压事件,并发送对应信号,的具体实现代码如下:
class ComboBox:public QComboBox
{
Q_OBJECT
public: