#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
#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));
}
#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
#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;
}
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
基於Qt的詞典開發系列
- 詞典框架設計及成品展示
- 本地詞典的設計
- 開始菜單的設計
- 無邊框窗口的縮放與拖動
- 無邊框窗口的拖動
- 界面美化設計
- 調用網絡API
- 用戶登錄及API調用的實現
- JSON數據解析
- 國際音標的顯示
- 系統托盤的顯示
- 調用講述人
- 音頻播放
- 自動補全功能
- HTML特殊字符及正則表達式
- 後序
原文:http://blog.csdn.net/tengweitw/article/details/45099867
作者:nineheadedbird