Qt实现菜单栏,工具栏,状态栏

1.菜单栏

1.设计模式

点击 在这里输入 输入完毕后直接回车即可
这里写图片描述
同样子菜单也是同样操作。
如果我们想给菜单设置ICON,可以如下操作:
在File下新建一个Open子菜单,现在想给Open子菜单添加Icon图标。选中子菜单Open,在Open子菜单对应的QAction属性中可以设置icon
这里写图片描述
点击icon后的下三角,可以发现有两个选择,一个是选择文件,另一个是选择资源。
a)选择文件:
我们点击选择文件,然后选中相应的icon,这时我们在设计模式下,是能正常看到此图标在菜单显示了
这里写图片描述
然后在qt Creator里清除->构建->执行Qmake,然后运行即可。
这里写图片描述

b)选择资源:
我们先来创建资源文件。右击工程项目->添加新文件,
这里写图片描述
选择Qt->Qt Resource File,然后点击choose
这里写图片描述
在弹出的窗口里,给新资源文件命名:menu_icon
这里写图片描述
在项目里就能看见多了一个资源文件
这里写图片描述
然后右击资源文件名menu_icon.qrc,添加现有文件,把我们想要的icon加进来。
这里写图片描述
剩下的操作就是步骤a)中设置QAction的icon属性了,这时就是选择资源文件了,这里写图片描述
比如选择Document,然后重新构建,运行即可。

2.代码模式

当然,除了设计模式来实现菜单外,也可以直接使用代码来实现菜单
比如,下图是设计模式中实现的菜单
这里写图片描述
这时我们来通过代码实现一个主菜单和子菜单

<code class="hljs lasso has-numbering"><span class="hljs-comment">//新增主菜单</span>
QMenu<span class="hljs-subst">*</span> menu <span class="hljs-subst">=</span> ui<span class="hljs-subst">-></span>menuBar<span class="hljs-subst">-></span>addMenu(tr(<span class="hljs-string">"CodeMenu"</span>));
<span class="hljs-comment">//创建子菜单</span>
QAction<span class="hljs-subst">*</span> subCodeMenuAction <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QAction(tr(<span class="hljs-string">"subCodeMenu"</span>),this);
<span class="hljs-comment">//给子菜单加icon图标</span>
subCodeMenuAction<span class="hljs-subst">-></span>setIcon(QIcon(tr(<span class="hljs-string">"res/24x24/loop.png"</span>)));
<span class="hljs-comment">//把子菜单和父菜单关联</span>
menu<span class="hljs-subst">-></span>addAction(subCodeMenuAction);
<span class="hljs-comment">//添加信号槽</span>
<span class="hljs-comment">//connect(subCodeMenuAction,SIGNAL(triggered(bool)),this,SLOT(clickSubCodeMenuAction));</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

这就是添加代码之后的运行效果。
这里写图片描述

2.工具栏

a)准备工作,我们现在工程中新增一个资源文件为9.png,后面用
b)我们在Action Editor中点击新建Action
这里写图片描述

这里写图片描述
命名和选择图标后点击确定。
这时我们在Action Editor中看见多了一个Action
这里写图片描述
这时可以直接用鼠标把它拖到工具栏上。
保存后运行,我们就可以看到已经添加到工具栏上了。
这里写图片描述

c)代码实现
在我们上面的步骤a,b中实现工具栏的时候,我们就明白了,其实就是增加QAction,那么我们的代码实现也一样,就是把新增的QAction和工具栏关联起来就可以了

<code class="hljs lasso has-numbering">    <span class="hljs-comment">//新增QAction</span>
    QAction<span class="hljs-subst">*</span> newItemToolBar <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QAction(tr(<span class="hljs-string">"newItem"</span>),this);
    <span class="hljs-comment">//给QAction加icon图标</span>
    newItemToolBar<span class="hljs-subst">-></span>setIcon(QIcon(tr(<span class="hljs-string">"res/24x24/8.png"</span>)));
    <span class="hljs-comment">//把QAction和工具栏关联</span>
    ui<span class="hljs-subst">-></span>mainToolBar<span class="hljs-subst">-></span>addAction(newItemToolBar);</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

然后运行,我们看下结果。
这里写图片描述

这里工具栏上的8就是我们通过代码实现的。

3.状态栏
状态栏的实现就很简单了,直接贴代码了。

<code class="hljs lasso has-numbering">    QLabel<span class="hljs-subst">*</span> label1 <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QLabel(tr(<span class="hljs-string">"Label1"</span>),this);
    QLabel<span class="hljs-subst">*</span> label2 <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QLabel(tr(<span class="hljs-string">"Label2"</span>),this);
    QLabel<span class="hljs-subst">*</span> label3 <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QLabel(tr(<span class="hljs-string">"Label3"</span>),this);
    QLabel<span class="hljs-subst">*</span> label4 <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> QLabel(tr(<span class="hljs-string">"Label4"</span>),this);
    ui<span class="hljs-subst">-></span>statusBar<span class="hljs-subst">-></span>addWidget(label1,<span class="hljs-number">1</span>);
    ui<span class="hljs-subst">-></span>statusBar<span class="hljs-subst">-></span>addWidget(label2,<span class="hljs-number">1</span>);
    ui<span class="hljs-subst">-></span>statusBar<span class="hljs-subst">-></span>addWidget(label3,<span class="hljs-number">1</span>);
    ui<span class="hljs-subst">-></span>statusBar<span class="hljs-subst">-></span>addWidget(label4,<span class="hljs-number">1</span>);</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

然后我们看下运行结果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值