qt 自定义菜单
2016-03-22 15:21
363 查看
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "QMenu"
#include "qwidgetaction.h"
#include "menuitem.h"
#include "QPushButton"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenu* menu = new QMenu(this);
QWidgetAction* action = new QWidgetAction( this );
MenuItem* item = new MenuItem();
action->setDefaultWidget( item );
menu->addAction( action );
menu->addAction( "menu 1");
QPushButton* btn = new QPushButton( this );
btn->setMenu( menu );
}
MainWindow::~MainWindow()
{}
#ifndef MENUITEM_H
#define MENUITEM_H
#include <QWidget>
class MenuItem : public QWidget
{
public:
MenuItem(QWidget *parent = 0 );
};
#endif // MENUITEM_H
#include "menuitem.h"
#include "QLabel"
#include "QVBoxLayout"
MenuItem::MenuItem(QWidget *parent) :
QWidget(parent) {
QVBoxLayout* layout = new QVBoxLayout();
QLabel* label1 = new QLabel( "label1" );
layout->addWidget( label1 );
QLabel* label2 = new QLabel( "label2" );
layout->addWidget( label2 );
this->setLayout( layout );
}
菜单默认图标是16, 修改为32CusIconStyle* m_pCuStyle = new CusIconStyle;menu.setStyle(m_pCuStyle );#include "cusiconstyle.h"CusIconStyle::CusIconStyle():QProxyStyle(){}int CusIconStyle::pixelMetric(PixelMetric metric, const QStyleOption * option, const QWidget * widget) const{int s = QProxyStyle::pixelMetric(metric, option, widget);if (metric == QStyle::PM_SmallIconSize) {s = 32;}return s;}#ifndef CUSICONSTYLE_H#define CUSICONSTYLE_H#include <QProxyStyle>// set menu item icon from 16*16 to 32*32class CusIconStyle: public QProxyStyle{Q_OBJECTpublic:CusIconStyle();~CusIconStyle(){}int pixelMetric(PixelMetric metric, const QStyleOption * option, const QWidget * widget) const;};#endif // CUSICONSTYLE_H
相关文章推荐
- qt 编写插件 很好的解释了 WorkStation.exe 和trade.dll 之间如何调用
- QT QTableView 获取某行的所有信息
- Qt学习之解决QListWidgetItem有重叠时,点一下全部选中的问题
- Qt SQLite数据库操作
- qt 拖动 讲解 QDrag
- Qt 5.6 的 Qt.labs.controls 在安卓上效果
- Qt5自带加密方法
- QTableview的一些用法
- Qt中如何添加ICON图标 Qt设置应用程序图标
- Qt官方开发环境生成的exe发布方式--使用windeployqt
- winpcap在VS2012 Qt5 X64下的配置
- QT - Model/View 总结
- QT信号与槽的自动连接
- Qt之qSort
- QT布局管理器(QVBoxLayout,QHBoxLayout)不同部分比例大小设置方法
- Qt中 QString 和int, char等的“相互”转换
- Qt 在控件上面绘图 label,pushbutton。。。。。
- Qt5.5做的计算器
- QT学习笔记(1)—字符编码
- Qt信号槽函数用lambada表达式作为槽函数的陷阱