Qt中实现菜单和工具栏功能

Qt创建菜单和工具栏:

一、  temp.h文件的内容

1.定义类temp继承QMainWindow

2.添加Q_OBJECT , 构造函数 、 析构函数等内容

3.$重点内容

3.1定义QAction *newAction;  (相当于菜单和工具条里面的基本功能如:新建、打开文件)

3.2定义QMenu *fileMenu;

3.3定义  QToolBar *fileToolBar;

4.定义QAction的响应函数即slot函数:

private slots:

void msg();

二、 temp.cpp 文件内容

1.添加头文件

#include <QtGui>

#include "temp.h"

#include<windows.h>    //MessageBox()函数

2.填写构造函数(重点内容)

2.1 初始化和设置QAction

    newAction = new QAction(tr("&New"), this);
    newAction->setIcon(QIcon("D:/Documents/Visual Studio 2010/Projects/qt-book/chap03/temp/images/new.png"));
    newAction->setShortcut(QKeySequence::New);
    newAction->setStatusTip(tr("Create a new spreadsheet file"));
    connect(newAction, SIGNAL(triggered()), this, SLOT(msg()));

2.2 添加File菜单并返回指针给QMenu *fileMenu , 将QAction添加到菜单File中。

fileMenu = menuBar()->addMenu(tr("&File"));       //menuBar()需要头文件#include <QtGui>

fileMenu->addAction(newAction);

2.3 添加File工具栏并返回指针给QToolBar * fileToolBar ,将QAction添加到File工具栏中

fileToolBar = addToolBar(tr("&File"));

fileToolBar->addAction(newAction);

3.实现void msg()函数(用于测验使用)

void temp::msg()

{        MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO); }

三、 main.cpp文件的内容

#include "temp.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    temp w;
    w.show();
    return a.exec();
}

main.cpp

四、补充temp.h和temp.cpp文件

#ifndef TEMP_H
#define TEMP_H

#include <QtGui/QMainWindow>
class temp : public QMainWindow
{
    Q_OBJECT

public:
    temp(QWidget *parent = 0);
    ~temp();
private:
    QAction *newAction;
    QMenu *fileMenu;
    QToolBar *fileToolBar;

private slots:
    void msg();

};

#endif // TEMP_H

temp.h

#include <QtGui>
#include "temp.h"
#include<windows.h>
temp::temp(QWidget *parent)
    : QMainWindow(parent)
{
    newAction = new QAction(tr("&New"), this);
    newAction->setIcon(QIcon("D:/Documents/Visual Studio 2010/Projects/qt-book/chap03/temp/images/new.png"));
    newAction->setShortcut(QKeySequence::New);
    newAction->setStatusTip(tr("Create a new spreadsheet file"));
    connect(newAction, SIGNAL(triggered()), this, SLOT(msg()));

     fileMenu = menuBar()->addMenu(tr("&File"));
     fileMenu->addAction(newAction);

      fileToolBar = addToolBar(tr("&File"));
      fileToolBar->addAction(newAction);

      //setCentralWidget(fileToolBar);  //此函数的作用是将QWidget控件放在中间位置
}

temp::~temp()
{

}
void temp::msg()
{
    MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);
}

temp.cpp

五、结果预览

  
  

六、工程文件下载地址

  http://pan.baidu.com/s/1mgkOkrQ

时间: 2024-08-30 13:28:47

Qt中实现菜单和工具栏功能的相关文章

qt中设置菜单高度

如题所示,我建立一个菜单,代码如下,但是菜单项的高度太小了, { popupMenu = new QMenu(this); QAction *action1 = new QAction(tr("&New1"), this); QAction *action2 = new QAction(tr("&New2"), this); QAction *action3 = new QAction(tr("&New3"), this)

在插件式应用程序中,实现对菜单,工具栏按钮的 完全解耦及状态控制

之前承诺会对 Winform IDE,WPF 客服程序的开发进行进一步的分解记录,很抱歉一直没有太多时间认真梳理. 本篇博客抽取了这两个应用程序的一个共通功能的实现方法进行说明,即在插件式应用程序中,对菜单及工具栏的控制. 对于复杂的应用程序开发,我们可能会将程序的功能进行分解,模块化,插件化:那么如何在应用程序的宿主中,向插件提供统一的菜单,工具栏注册,更新,销毁机制呢?以及如何做到UI无关的彻底解耦合? 看两个例子: 基于 Winform 的插件式应用程序: http://www.cnblo

Qt中截图功能的实现

提要 需求:加载一张图片并显示,可以放大缩小,可以截取图片的某个矩形并保存. 原以为蛮简单的一个功能,其实还是有点小复杂. 最简单Qt图片浏览器可以参考Qt自带的Demo:Image Viewer Example 看一下最终的实现效果: 图片的加载显示 这里需要实现一个QImageViewer的类,继承自QWidget. 图片用QPixmap来加载和显示,还有三个成员分别是图片的缩放因子,图片是否已经加载,viewer是否已经初始化,是否处于裁剪状态. private: QPixmap m_pi

Javascript中document.execCommand()的用法 ( 实现浏览器菜单的很多功能 )

document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令参数(如下例中的"2D-Position"),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框(下例中的"false"即表示不显示对话框),动态参数一般为一可用值或属性值(如下例中的"true"). document.

qt中qlineedit和qtextedit右键菜单翻译成中文

没有linguist需要安装Linguist: 在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer 其中: qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator     qt4-doc 这个是帮助文档     qt4-qtconfig Qt的配置工具,这个装好默认好     qt4-demos 官方的一些Dem

Qt中QMenu的菜单关闭处理方法

Qt中qmenu的实现三四千行... 当初有个特殊的需求, 要求菜单的周边带几个像素的阴影, 琢磨了半天, 用QMenu做不来, 就干脆自己用窗口写一个 然而怎么让菜单消失却非常麻烦 点击菜单项 点击其他地方 被其他窗口遮挡 按键啊 然后用判断焦点的方法吭哧吭哧写了, 做法类似弹出一个自动关闭的窗口. 但是菜单是可以多级的, 这就造成非常恶心的焦点传递. 虽然最终处理好了(代码好恶心- -!, 自己看得都想吐) 可惜天不遂人愿, 但其他窗口一起抢焦点的时候, 我的菜单就变成奇葩了. 想来想去也想

第38课 Qt中的事件处理(上)

1. GUI程序原理回顾 (1)图形界面应用程序的消息处理模型 (2)思考:操作系统发送的消息如何转变为Qt信号 2. Qt中的事件处理 (1)Qt平台将系统产生的消息转换为Qt事件 ①Qt事件是一个QEvent的对象 ②Qt事件用于描述程序内部或外部发生的动作 ③任意的QObject对象都具备事件处理的能力 (2)GUI应用程序的事件处理方式 ①Qt事件产生后立即被分发到QWidget对象 ②QWidget中的event(QEvent*)进行事件处理 ③event()根据事件类型的不同,调用不

第47课 Qt中的调色板

1. QPalette类 (1)QPalette类提供了绘制QWidget组件的不同状态所使用的颜色. (2)QPalette对象包含了3个状态的颜色描述 ①激活颜色组(Active):组件获得焦点使用的颜色搭配方案 ②非激活颜色组(Inactive):组件失去焦点使用的颜色方案 ③失效颜色组(Disabled):组件处于不可用状态使用的颜色方案 2.QPalette类中颜色组用途 (1)QPalette类中的颜色组定义了组细节的颜色值 (2)QPalette::ColorRole中的常量值用于

第三十八课、Qt中的事件处理(上)

一.图形界面应用程序的消息处理模型 二.Qt的事件处理 1.Qt平台将系统产生的消息转换为Qt事件(每一个系统消息对象Qt平台的一个事件) (1).Qt事件是一个QEvent的对象 (2).Qt事件用于描述程序内部或者外部发生的动作 (3).任意的QObject对象都具备事件处理的能力 2.GUI应用程序的事件处理方式 (1).Qt事件产生后立即被分发到QWidget对象 (2).QWidget中的event(QEvent*)进行事件处理 (3).event()根据事件类型调用不同的事件处理函数