QWidgetAction

//头文件

#ifndef LACTION_H

#define LACTION_H
 
#include <QWidgetAction>
 
class LAction : public QWidgetAction
{
public :
    explicit LAction(QWidget *parent = 0);
    ~LAction();
protected:
    QWidget * createWidget(QWidget *parent);
private:
    QWidget *myWidget;
};
 
#endif // LACTION_H
 
//源文件
#include "LAction.h"
#include <QLabel>
#include <QHBoxLayout>
#include <QMessageBox>
LAction::LAction(QWidget *parent)
    : QWidgetAction(parent)
{
    myWidget = new QWidget();
    myWidget->setWindowFlags(Qt::FramelessWindowHint);
    myWidget->setStyleSheet("background-color: rgb(37, 48, 255);");
    QVBoxLayout *layout = new QVBoxLayout();
    QLabel *music_name_label = new QLabel();
    music_name_label->setFixedSize(80,80);
    music_name_label->setAlignment(Qt::AlignCenter);
    layout->addWidget(music_name_label, 0, Qt::AlignCenter);
    layout->setSpacing(5);
    layout->setContentsMargins(0, 0, 0, 5);
    music_name_label->setText("player");
    music_name_label->setEnabled(false);
    myWidget->setLayout(layout);
}
LAction::~LAction()
{}
 
QWidget * LAction::createWidget(QWidget *parent)
{
    myWidget->setParent(parent);
    return myWidget;
}
/******************************************************************/
#include "testwindow.h"
#include "menubtn.h"
#include <QMenu>
#include <QWidgetAction>
#include <QVBoxLayout>
#include <QLabel>
TestWindow::TestWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenu * menu = new QMenu(this);
    LAction * la = new LAction(menu); //传入Action被添加到的控件指针
    menu->addAction("OK");
    menu->addAction("SORRY");
    menu->addSeparator();
    menu->addAction(la);
    MenuButton * menuBtn = new MenuButton(menu,false,this);
    setWindowTitle("parent");
}
TestWindow::~TestWindow()
{}
 
注意点:为myWidget 上添加layout,或为myWidget 指点宽高,否则music_name_label会被放置在到menu的顶部
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值