<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 【Qt編程】基于Qt的詞典開發系列--開始菜單的設計 這篇文章講講如何實現開始菜單(或者稱為主菜單)的設計。什么是開始菜單呢?我們拿常用的軟件來用圖例說明,大多數軟件的開始菜單在左下角,如下圖: 1、window 7的開始菜單 ![](https://box.kancloud.cn/2016-01-15_5698c1c5585bc.jpg) 2、有道詞典的主菜單 ![](https://box.kancloud.cn/2016-01-15_5698c1c573d6e.jpg) 3、QQ的開始菜單 ![](https://box.kancloud.cn/2016-01-15_5698c1c5871c6.jpg) 4、我寫的詞典軟件的開始菜單 ![](https://box.kancloud.cn/2016-01-15_5698c1c59e35b.jpg) ![](https://box.kancloud.cn/2016-01-15_5698c1c5b1c1c.jpg) 當你左鍵單擊開始菜單時,就會彈出相應的菜單選項,然后你就可以進行相關操作。**本文只講如何實現點擊按鈕,彈出菜單功能,至于點擊菜單后的事件需要你自己編寫**。當然,關于右擊按鈕出現菜單的方法,則是要重寫qt自帶的函數,至于具體操作可以百度。 **要想使按鈕實現左鍵單擊彈出菜單,我們需要讓按鈕繼承下面的名為QMenuButton類,類文件如下**: **1、qmenubutton.h** ~~~ #ifndef QMENUBUTTON_H #define QMENUBUTTON_H #include <QToolButton> class QMenu; class QMenuButton : public QToolButton { Q_OBJECT public: explicit QMenuButton(QWidget *parent = 0); QMenu * getmenu(); QMenu * menu; signals: public slots: void popupmenu(); }; #endif // QMENUBUTTON_H ~~~ **2、qmenubutton.cpp** ~~~ #include "qmenubutton.h" #include <QMenu> #include<QRect> QMenuButton::QMenuButton(QWidget *parent) : QToolButton(parent) { menu = new QMenu(this); connect(this,SIGNAL(clicked()),this,SLOT(popupmenu()));//點擊按鈕就彈出菜單 } QMenu *QMenuButton::getmenu() { return menu; } void QMenuButton::popupmenu() { QPoint pos; //獲取按鍵菜單的坐標 // int x = pos.x(); int y = pos.y(); // pos.setX(x + this->geometry().width()/2);//也可以改變出現菜單的窗口的x位置 pos.setY(y-this->geometry().height()); //返回菜單下面的action不管有沒被選中,可以算一個小事件循環 //里面參數的意思是在哪個坐標彈出菜單,這里將自定義的pop按鍵的坐標作參考,并在其下面彈出菜單 menu->exec(this->mapToGlobal(pos)); } ~~~ **好吧,對于不懂得怎么繼承,也嫌麻煩,下面給出一個簡單的方法**:首先建立一個Qt Widgets Application,假設取項目名為MenuButton,類名取為Widget,選擇繼承于QWidget,然后將上面的qmenubutton.h和qmenubutton.cpp文件添加到項目中來。然后打開界面文件widgets.ui拖一個PushButton按鈕,**將objectName改為MenuButton**。然后右擊MenuButton選擇“提升為……”選項,然后在提升的類名稱中填寫上面我所提到的類的名字QMenuButton,然后選擇提升,這樣就完成了PushButton繼承QMenuButton。接著我們就要實現菜單選項的設計,具體需要用到QMenu類中的函數,在程序中,我給出了注釋,大家可以依葫蘆畫瓢來定制自己的菜單內容。**下面給出具體的實現:** 1、widget.h文件: ~~~ #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H ~~~ **2、qmenubutton.h (前面已給出)** **3、widget.cpp文件:** ? ~~~ #include "widget.h" #include "ui_widget.h" #include<QMenu> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QMenu * menu = ui->MenuButton->getmenu();//獲得菜單,并向上面添加菜單 QAction* ToTop =menu->addAction("toTop");//一級菜單 //ToTop->setIcon(QIcon(":/searchwindow/searchwindow/topon_normal.png")); 為ToTop菜單添加圖片標識 // connect(ToTop, SIGNAL(triggered()), this, SLOT(on_toTopBtn_clicked()));添加事件,當單擊ToTop時,產生相應的事件 QMenu *fontMenu=menu->addMenu("Font"); QAction* FontSize1 = fontMenu->addAction("small");//二級菜單 QAction* FontSize2 = fontMenu->addAction("middle"); QAction* FontSize3 = fontMenu->addAction("large"); } Widget::~Widget() { delete ui; } ~~~ **4、qmenubutton.cpp(前面已給出)** **5、main.cpp文件:** ~~~ #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ~~~ **運行結果如下:** **點擊前:** ![](https://box.kancloud.cn/2016-01-15_5698c1c5c0957.jpg) **點擊后:** ![](https://box.kancloud.cn/2016-01-15_5698c1c5d1992.jpg) **** **** ****
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看