1. 程式人生 > >QT中選單Menu與工具欄Toolbar中各個Action的動態新增刪除

QT中選單Menu與工具欄Toolbar中各個Action的動態新增刪除

就像Swing裡面的Action一樣,Qt裡面也有一個類似的類,叫做QAction。顧名思義,QAction類儲存有關於這個動作,也就是action的資訊,比如它的文字描述、圖示、快捷鍵、回撥函式(也就是訊號槽),等等。神奇的是,QAction能夠根據新增的位置來改變自己的樣子——如果新增到選單中,就會顯示成一個選單項;如果新增到工具條,就會顯示成一個按鈕。

程式碼如下:

//MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void openFile();
    void add();
    void remove();
private:
    Ui::MainWindow *ui;
    //QAction *openAcition;
    QMenu *file;
    QAction *addscess;
    QToolBar *toolbar;
    QToolBar *toolbar1;
};

#endif // MAINWINDOW_H


//MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QAction *openAcition = new QAction(tr("&Open"),this);
    QAction *openAction = new QAction(tr("&apen"),this);
    QAction *add = new QAction(tr("&add"),this);
    QAction *remove = new QAction(tr("&remove"),this);

    file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAcition);
    file->addAction(add);
    file->addAction(remove);


    toolbar = addToolBar(tr("&File"));
    toolbar->addAction(openAcition);
    toolbar->addAction(openAction);

    toolbar1 = addToolBar(tr("&File"));
    //toolbar1->addAction(openAcition);
    toolbar1->addAction(openAction);


    connect(openAcition,SIGNAL(triggered()),this,SLOT(openFile()));
    connect(add,SIGNAL(triggered()),this,SLOT(add()));
    connect(remove,SIGNAL(triggered()),this,SLOT(remove()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::openFile()
{
    qDebug()<<"I did that!!";
}

void MainWindow::add()
{
    addscess = new QAction(tr("&addscess"),this);
    file->addAction(addscess);
    toolbar->addAction(addscess);
}

void MainWindow::remove()
{
    file->removeAction(addscess);
    toolbar->removeAction(addscess);
}


相關推薦

QT選單Menu工具Toolbar各個Action動態新增刪除

就像Swing裡面的Action一樣,Qt裡面也有一個類似的類,叫做QAction。顧名思義,QAction類儲存有關於這個動作,也就是action的資訊,比如它的文字描述、圖示、快捷鍵、回撥函式(也就是訊號槽),等等。神奇的是,QAction能夠根據新增的位置來改變自己的

j2se選單menu工具toolbar的簡單使用例子

public class my_menu extends JFrame{ //定義元件 JButton jb1 = new JButton(new ImageIcon("/imge/100×100.jpg")); //定義選單的bar JMenuBar jmb =

Qt學習筆記——QMainWindow下建立選單工具

選單欄與工具欄的建立 <------QMainWindow 需要QAction 選單欄選項快捷鍵設定,QAction物件->setShortcuts(QKeySequence); <--函式表示設定QAction這個物件的快捷鍵,QKeySequen

qt新增資原始檔以及新增選單圖示、工具選單的快捷方式、視窗以及對話方塊的icon

 1、file--new-QT resource file,就會在工程中新增一個資原始檔,然後單擊Add下拉框,選擇Add prefix,可以將生成的/new/prefix的字尾改為其他的名字,如file。然後在單擊Add下拉框,選擇Add files,將需要的圖示檔案新

MFC工具ToolBar按鈕新增下拉選單

1.在MainFrm.cpp的int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函式末尾新增如下程式碼: //為畫圖工具欄的按鈕新增下拉選單m_wndToolBar.GetToolBarCtrl().SetEx

wxPython選單工具

Menus and Toolbars選單與工具欄 A common part in a GUI application is a menubar. A menubar consists of objects called menus. Top-level menus hav

QT學習之菜單工具

沒有 app title div ica text .exe 信息 nbsp QT學習之菜單欄與工具欄 目錄 簡單菜單欄 多級菜單欄 上下菜單欄 工具欄 簡單菜單欄 程序示例 from PyQt5.QtWidgets import QApplic

Framework7學習筆記之導航工具的布局類型

class 文件中 div 工具 gpo 導航 log 不同的 布局 一:布局類型 導航欄、工具欄 有多種布局類型,他們分別有不同的表現效果,主要有:靜態布局、固定布局、穿透布局。 二:靜態布局(少用) 靜態布局的導航欄、工具欄,是寫死在頁面文件中的,

layuiadmin,關於工具tool檢視功能具體怎麼實現的問題

layuiadmin表格中的tool,點選編輯時跳出iframe子頁面的操作問題 最近在用閒心大佬的layuiadmin框架開發專案,作為一個前端小白,秉承著學習並總結的習慣寫下這個部落格,話不多說,上程式碼。 先看下父頁面的html,這邊我只擷取部分程式碼,

Android開發筆記(一百一十九)工具ToolBar

Toolbar 在前面的博文《Android開發筆記(二十)頂部導航欄》中,我們學習了ActionBar的用法,可是ActionBar著實是不怎麼好用,比如文字風格不能定製、圖示不能定製,而且還存在低版本的相容性問題,所以實際開發中大家還是不傾向使用ActionBar。為此

自定義工具 (ToolBar) 控制元件的外觀

  CToolBarCtrl 類提供許多影響工具欄物件外觀(並且有時是行為)的樣式。首次建立工具欄 (ToolBar) 控制元件時,通過設定 CToolBarCtrl::Create(或 CToolBar::CreateEx)成員函式的 dwCtrlStyle 引數修改工具

easyui--之總和使用方法--對話方塊dialog--工具toolbar-按鈕button--tabs忒博頁--樹tree--表格table

1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD

循序漸進實現仿QQ介面(四):圓形按鈕工具自繪

這一篇本來應該演示如何實現仿QQ介面的中間客戶區與底部工具欄,不過在實現底部工具欄的時候發現圓形按鈕與工具欄自繪有不少取巧的方法,因此加插這麼一篇,講解一下如何實現圓形按鈕和工具欄自繪。 前面幾篇都是在講解如何實現QQ頂部的標題欄,是用視窗貼圖實現,也講到底部區域會用不同的

Yii2.0Yii::$appYii 1.0Yii:app()的理解

框架源碼 靜態 UNC 一個 eap eba 你在 this 模式 一直不明白Yii::$app與Yii::app(),查找yii框架源碼後如下記錄分享 (1)在Yii1.0中Yii::app()返回的是你在index.php裏創建的CWebApplication實例,在對

Java關於x++++x在運算值的變化

首先(x++)+1中的小括號毫無意義,小括號並不會改變++運算的優先順序, 對錶達式自增運算子加括號絕大部分是因為需要進行程式碼的格式化, 並告訴java++應該是如何被解釋的,否則x+++x只會有一種解釋方式。但要注意是否該自增變數的後一表達式元素是否為常量。 如都為變數

,編寫一個程式,將a.txt檔案的單詞b.txt檔案的單詞交替合併到c.txt檔案,a.txt檔案的單詞用回車符分隔,b.txt檔案中用回車或空格進行分隔.

在java面試寶典看到這樣一題,看到答案真蛋疼,看了半天才明白,可能每個人的想法不一樣!答案也不知道是那位前輩寫的,讓人理解起來太費精了!老饒彎子,以下是本人自已整理的,去面試如果真有這麼一題,應該不成問題了。。。。。。。如有不是的地方還望指點 package accp

Java基本型別String在記憶體的儲存

關於在JAVA中基本型別的儲存與String的儲存的問題 主要涉及到堆記憶體和棧記憶體 棧記憶體用來儲存的是基本型別和引用變數(即物件的變數名字) 棧記憶體是用來儲存物件的例項(即new 出來的新物件都由堆記憶體進行儲存) 對於基本型別來說 拿 int 型別舉個例子 i = 1; j

微信小程式自定義位實現選項的動態新增刪除

問題描述: 在自定義選項中,點選新增選項按鈕,會出現一個選項的輸入框,輸入的選項可以通過點選左側的減號刪除 效果如圖: 解決過程: 1.首先寫出大體的框架。在pages下,建立了一個selfdefine的資料夾,在wxml中寫出靜態結構 selfdefine.wxml 說明

Qt入門 工具QToolBar和選單QMenuBar(六)

只有在繼承了QMainWindow的窗體,才會有this->menuBar()->addMenu();以及this->addToolBar()函式。 Qmune QMune與QMenuBar之間的關係見下面的程式碼。 //方法1: QMenu