设为首页 加入收藏

TOP

【Qt6】QWidgetAction 的使用(三)
2023-08-26 21:10:53 】 浏览:176
Tags:Qt6 QWidgetAction
out* layout = new QFormLayout(this); // 创建三个滑条 QSlider* slider1 = new QSlider; slider1->setRange(0,255); // 有效范围 QSlider* slider2 = new QSlider; slider2->setRange(0,255); QSlider* slider3 = new QSlider; slider3->setRange(0,255); // 设置滑条的方向是水平方向 slider1->setOrientation(Qt::Horizontal); slider2->setOrientation(Qt::Horizontal); slider3->setOrientation(Qt::Horizontal); // 把它们添加到布局中 layout->addRow("Red:", slider1); layout->addRow("Green:", slider2); layout->addRow("Blue:", slider3); // 设置边框为面板 this->setFrameShape(QFrame::Panel); }

滑块条是 QSlider 组件,它默认的方向是垂直的,所以要将方向设定为水平。自定义组件还用到了 QFormLayout 类,它是布局类,类似 HTML Form 元素的布局方式,即表单。一般分为两列,左列是字段标题,右列是字段内容。

CustWidget 组件定义好了,接下来就是 MyWidgetAction 类,派生自 QWidgetAction。

// 头文件
#ifndef MYWIDGETACTION_H
#define MYWIDGETACTION_H

#include <QWidgetAction>
#include "custWidget.h"

class MyWidgetAction : public QWidgetAction
{
public:
    MyWidgetAction(QObject *parent);

protected:
    QWidget *createWidget(QWidget *parent) override;
};

#endif

// 代码文件
#include "myWidgetAction.h"

MyWidgetAction::MyWidgetAction(QObject *parent)
    :QWidgetAction::QWidgetAction(parent)
{
}

QWidget *MyWidgetAction::createWidget(QWidget *parent)
{
    CustWidget* w = new CustWidget(parent);
    return w;
}

整体逻辑很简单,就是返回 CustWidget 的实例。

 

然后咱们在前面 QWidgetAction 的示例上再添加一个菜单项,使用咱们刚定义的 MyWidgetAction。

MyWindow::MyWindow()
    :QMainWindow((QWidget*)nullptr)
{
    // 创建菜单栏
    QMenuBar *menubar = this->menuBar();
    // 创建菜单
    QMenu *menu = menubar->addMenu("应用程序");
    ……
    // 下面这个是自定义的
    MyWidgetAction *custAct = new MyWidgetAction(menu);
    menu->addAction(custAct);
}

最后,咱们来看看效果。

这效果不错吧。

好了,今天就水到这里了,有空咱们继续聊。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇linux c++ tcp 下一篇C++项目实战之演讲比赛流程管理系..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目