您的位置:首页 > 产品设计 > UI/UE

QT之GUI学习笔记(八)----菜单和工具条的优化

2017-03-17 13:54 288 查看
原文地址:http://devbean.blog.51cto.com/448512/205958

如何进行菜单和工具栏的优化,有以下步骤

一 添加图标

QAction的图标会显示在菜单项的前面以及工具条按钮上面显示。我们需要使用QT的资源文件

(1)



(2)



(3)点击添加 添加前缀 如图所示



将生成的/new/prefix改成/。这是prefix就是以后使用图标时需要提供的前缀,以/开头。添加过prefix之后,然后在工程文件中添加一个图标,再选择Add file,选择那个图标。这样完成之后保存qrc文件即可。

二.代码修改

1.修改mainwindow.cpp的构造函数的代码

openAction = new QAction(tr("&Open"), this);
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file."));
openAction->setIcon(QIcon(":/PICTURE/panda.ico"));


(1)setIcon用于添加图标,添加的类为QIcon类型;

构造函数需要参数,参数类型是一个字符串。

由于需要使用qrc中定义的图片,所以字符串以:开始,后面加file的路径

点击run,运行结果如下



2.为QAction添加事件响应

QT的事件响应基于信号槽机制。

点击QAction会发出triggered()信号,因而此时需要声名一个slot,然后connect这个信号。

(1)mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
/*前向声名,这是第一句增加的话
*/

class QAction;

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget
4000
*parent = 0);
~MainWindow();
private slots:
void open();
private:
//定义一个QAction类型的指针
QAction *openAction;

};

#endif // MAINWINDOW_H


(2)mainwindow.cpp

#include <QMenu>
#include<QMenuBar>
#include<QAction>
#include<QKeySequence>
#include<QToolBar>
#include<QMessageBox>
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//定义openAction,设置快捷键
openAction = new QAction(tr("&Open"), this);
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file."));
openAction->setIcon(QIcon(":/PICTURE/panda.ico"));
connect(openAction,SIGNAL(triggered()),this,SLOT(open()));

//往menuBar中添加menu
QMenu *file = menuBar()->addMenu(tr("&File"));
file->addAction(openAction);
//添加工具栏
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
}

MainWindow::~MainWindow()
{

}
void MainWindow::open(){
QMessageBox::information(NULL,tr("open"),tr("open a file"));
}


运行结果如下:



三 图片知识

1.图片路径

Qt的资源文件视图使用树状结构,根是/,叶子节点就是图片位置,连接在一起就是路径。比如这张图片的路径为/PICTURE/panda.ico



2.图片大小

QToolBar的图标大小默认是32*32,菜单默认是16*16。如果提供的图标小于要求的尺寸,则不做操作,Qt不会为你放大图片;反之,如果提供的图标文件大于相应的尺寸要求,比如是64*64,Qt会自动缩小尺寸
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: