栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QWidgetAction

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QWidgetAction

QWidgetAction介绍:
大多数action用作菜单中条目,或者状态栏中按钮。很多情况,我们需要一些复杂Qt部件,例如具有缩放功能的按钮(Qtoolbar中QcomboBox表示不同的缩放等级),QToolBar中提供了InsertWidget函数,提供用户自定义的部件。
如果你想要在容器中实现一些通用定制可视化的部件,你需要继承QWidget部件。
如果在QToobBar添加了QWidgetAction,就会调用QWidgetAction::createWidget(),重载该函数,构建一个包含父属性(parent)通用新部件。
如果一个action从容器中移除,那么QWidgetAction::deleteWidget()就会已先前的构建的通用部件作为参数。默认重载函数隐藏了部件,且通过使用QObject::deleteLater删除它。
如果你设计一个部件,你可以通过setDefaultWidget()来设置为默认组件。添加到QToolBar或者支持QWidgetAction的action容器中的action,能够被使用起来。
注意:
createWidget说明:

如果action添加到一个部件容器,这个createWidget就会被调用。如果不希望自定义的小部件在指定父部件展示,则应返回0。

class MyAction:public QWidgetAction
{
 Q_OBJECT
public:
    MyAction(QWidget *parent);
    QWidget *createWidget(QWidget *parent);
    QLineEdit * lineedit;
signals:
    void changetext(QString content);

public slots:
    void onchangtext();

};

```cpp
#include "myaction.h"
#include 
//#include 
#include 
#include 
#include 
#include 

MyAction::MyAction(QWidget *parent):QWidgetAction(parent)
{


}
QWidget *MyAction::createWidget(QWidget *parent)
{
    QHBoxLayout* vbox = new QHBoxLayout();
    lineedit = new QLineEdit();
    QLabel * tip = new QLabel();
    tip->setText(tr("请输入内容:"));
    tip->resize(40,40);
    vbox->addWidget(tip);
    vbox->addWidget(lineedit);
    vbox->setGeometry(QRect(100,30,200,100));
    QWidget *centralWidget = new QWidget(parent); //QMainWindow 有一个中央窗体!所以你的布局必须得在它上面
    centralWidget->setLayout(vbox);
    connect(lineedit,SIGNAL(returnPressed()),this,SLOT(onchangtext()));
    return centralWidget;
}

void MyAction::onchangtext()
{
    QString content = lineedit->text();
    emit changetext(content);

}
setDefaultWidget说明
将部件设置为默认部件。所有权转移到QWidgetAction。除非子类重新实现createWidget()以返回新的部件,否则当容器部件通过requestWidget()获取部件时,将使用默认部件。
(不用实现createWidget()而实现自定义Action)
QMenu *menu3= menuBar()->addMenu(tr("菜单"));
QLabel *label = new QLabel();
label->setText("hello world");
QWidgetAction *action3 = new QWidgetAction(this);
action3->setDefaultWidget(label);
menu3->addAction(action3);
requestWidget说名

返回一个用来表现action的部件,带有指定parent。
支持actions的容器部件,在可视化的时候,会调用此函数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号