百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Qt的常用控件 qt控件函数

bigegpt 2024-10-12 05:26 84 浏览

QWidget与QFrame

  • QWidget所有图形控件的基类
  • QFrame与QWidget的区别QFrame是基本控件的基类, QWidget是QFrame的基类. 因此QFrame支持的方法更多一些.

QMenu与QMenuBar

  • 头文件
#include <QMenuBar>//菜单栏
#include <QMenu>//菜单
#include <QAction>//动作
  • 构造代码
//添加菜单栏
QMenuBar *mBar = menuBar();
//添加菜单
QMenu *pFile = mBar->addMenu("文件");
//添加菜单项, 添加动作
QAction *pNew = pFile->addAction("新建");
//连接到对应槽函数
connect(pNew, &QAction::triggered, [](){});
//添加分割线
pFile->addSeparator();
//创建一个菜单文本为“保存(&S)”并且Ctrl+S为键盘快捷键的“文件保存”操作。
fileSaveAction = new QAction( "Save File", QPixmap( filesave),"&Save", CTRL+Key_S, this, "save" );
//连接到对应槽函数
connect( fileSaveAction, SIGNAL( activated() ) , this, SLOT( save() ) );

QToolBar

  • 头文件
#include <QToolBar>
#include <QPushButton>
  • 构造代码
//添加工具栏
QToolBar *toolBar = addToolBar("toolBar");
//把上面菜单栏定义的指针直接拿过来就添加到工具栏了.
toolBar->addAction(pNew);
//定义其他文字或图片工具栏按钮
QPushButton *b = new QPushButton(this);
b->setText("^_^");
//按下工具栏按钮, 笑脸变成123
connect(b, &QPushButton::clicked, [](){b->setText("123");});

QStatusBar

  • 头文件
#include <QStatusBar>
#include <QLabel>//显示控件
  • 构造代码
QStatusBar *sBar = statusBar();
QLabel *label = new QLabel(this);//新建标签
label -> setText("hello");//设置标签显示内容
sBar -> addWidget(label);//将标签添加至状态栏

核心控件(工作区控件)

  • 代码
//将QTextEdit设置为核心控件
this->setCentralWidget(new QTextEdit);

QDockWidget

  • 头文件
#include <QDockWidget>
  • 创建代码
//创建浮动窗口
QDockWidget *dock = new QDockWidget(this);
//将浮动窗口显示在窗口右边
addDockWidget(Qt::RightDockWidgetArea, dock);
//创建一个编辑框
QTextEdit *textEdit = new QTextEdit(this);
//将编辑框放到浮动窗口里
dock->setWidget(textEdit);

QDialog

  • 对话框如果申请了堆区内存, 关闭时是不进行释放的, 只有程序结束才释放. 可通过以下属性设置对话框关闭时即释放内存
QDialog *p = new QDialog;
p->setAttribute(Qt::WA_DeleteOnClose);

QMessageBox

  • 头文件
#include <QMessageBox>
  • 关于
//参数:指定父窗口, 标题, 内容
QMessageBox::about(this, "about", "关于qt");
  • 问题
//参数:指定父窗口, 标题, 问题, 返回选择结果
int ret = QMessageBox::question(this, "question", "是否关闭?");
switch(ret)
{
    case QMessageBox::Yes:
        qDebug()<<"你选择了yes";
        break;
    case QMessageBox::No:
        qDebug()<<"你选择了no";
        break;
    default:
        break;
}
//第四个参数可以指定显示的选项
ret = QMessageBox::question(this, "question", "是否关闭?", QMessageBox::Ok|QMessageBox::Cancel);

QFileDialog

  • 头文件
#include <QFileDialog>
  • 使用
//参数:指定父窗口, 标题, 路径. 返回字符串为文件路径.
QString path = QFileDialog::getOpenFileName(this, "open", "../");
//最后一个参数可以设定可选文件类型.
path = QFileDialog::getOpenFileName(this, "open", "../", "souce(*.cpp *.h);;Text(*.txt);;all(*.*)");
  • 打开多个文件(getOpenFileNames)时, 返回QStringList

Qlabel

  • 属性pixmap属性设置图片(直接选时是相对路径)scaledContents自动填充
  • Qt相对路径问题编译运行时, 相对路径为makefile
  • 为避免相对路径带来的问题, 可以使用资源文件, 也可以采用获取exe文件相对路径的方式.
  • 资源文件添加方法:在工程里将需要用到的图片放到集中的文件夹.添加Qt Resource File, 设置一个文件名在*.qrc上双击或者"open in editor"菜单添加-添加前缀添加资源文件编译保存一下此后编译出的可执行文件包含资源文件, 因此大一些

QLineEdit

  • 设置边框颜色和圆角
setStyleSheet(QString("border:1px solid;border-radius:2px;border-color:rgb(120, 120, 120);border-width:1px;")
  • 设置左边留白
setTextMargins(8, 0, 0, 0);

QScrollArea

  • 自定义竖直下拉滚动条设置圆角并隐藏上下的三角符号
    CScrollArea::CScrollArea(QWidget *parent): QScrollArea(parent)
    {
        setStyleSheet("QScrollArea{border:0;padding:0;}");//设置下拉滚动条影响范围的区域边框为0
        verticalScrollBar()->setStyleSheet(
            "QScrollBar{margin: 0px;background:transparent; width: 6px;height:30px; min-width:6; min-height:30}"//设置下拉滚动条背景宽度6高度30无边框背景透明
            "QScrollBar::handle{background:#c0c0c0; border:0; height:40;min-height:40;border-radius:3px;}"//设置滚动条颜色#c0c0c0无边框最小高度40圆角3px
            "QScrollBar::handle:hover{background:gray; border:0;}"//设置鼠标徘徊颜色为灰色边框0
            "QScrollBar::sub-line{background:transparent;width:0px;height:0px;border:0;}"//设置下拉滚动条上拉三角为0
            "QScrollBar::add-line{background:transparent;width:0px;height:0px;border:0;}"//设置下拉滚动条下拉三角为0 
        );   
    }
  • 给QScrollArea影响区域加外框如果想把滚动条区域框起来, 应该将以上控件放入一个QWidget, 设置QWidget的边框和颜色, 并设置其不影响滚动条局域, 可以设置QWidget子控件不继承其Style属性. 下面代码中 #widgetOut表示该设置仅对这个控件生效
     ui.widgetOut->setStyleSheet("QWidget #widgetOut{border:1px solid;border-color:#e6e6e6;padding:0;}");

QCheckBox

  • 使用自定义图片的CheckBox
setStyleSheet(QString("QCheckBox::indicator:unchecked { image: url(%1);}").arg("/checkbox/unchecked.png") +
        QString("QCheckBox::indicator:unchecked:hover {image: url(%1);}").arg("/checkbox/uncheckedHover.png") +
        QString("QCheckBox::indicator:checked {image: url(%1);}").arg( "/checkbox/checked.png") +
        QString("QCheckBox::indicator:checked:hover {image: url(%1);}").arg("/checkbox/checkedHover.png") +
        QString("QCheckBox::indicator:indeterminate {image: url(%1);}").arg("/checkbox/partiallyChecked.png") +
        QString("QCheckBox::indicator:indeterminate:hover {image: url(%1);}").arg("/checkbox/partiallyCheckedHover.png") +
        QString("QCheckBox::indicator:unchecked:disabled {image: url(%1);}").arg("/checkbox/disable.png"));

QTableWidget

  • 自定义QTabelWidget各风格
    //first example
    pWindow->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);		//去掉水平滚动条
    pWindow->verticalHeader()->setVisible(false);				        //设置垂直头不可见
    pWindow->setFrameShape(QFrame::NoFrame);				            //设置无边框
    pWindow->setSelectionBehavior(QAbstractItemView::SelectRows);		//一次选择一行
    //设置选中行的背景色
    pWindow->setStyleSheet("selection-background-color:#e5e5e5;selection-color:#666666;background-color:#ffffff;color:#666666;");
    pWindow->setEditTriggers(QAbstractItemView::NoEditTriggers);		//设置不可编辑
    pWindow->horizontalHeader()->setHighlightSections(false);		    //点击表时不对表头行光亮(获取焦点)
    //设置表头不可拖动
    pWindow->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);	
    pWindow->horizontalHeader()->setSectionsClickable(false);		    //禁止表头点击
    //设置表头字体,颜色
    pWindow->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:#f7f7f7;border:1px solid #e5e5e5;}");
    pWindow->horizontalHeader()->setFixedHeight(40);			        //设置表头的高度
    LL::SetVerticalScrollbar(pWindow->verticalScrollBar());			    //设置垂直滚动条风格
    pWindow->setItemDelegate(new CNoFocusDelegate());			        //设置鼠标行时,不显示单元格虚框
    pWindow->setSelectionMode(QAbstractItemView::SingleSelection);		//设置只允许选择一行
    //设置表头字体
    QFont font = pWindow->horizontalHeader()->font();
    font.setBold(false);
    font.setPixelSize(12);
    pWindow->horizontalHeader()->setFont(font);
    //Second Example
    ui.tableWidget->setRowCount(6);                                      //设置6行
    ui.tableWidget->setColumnCount(3);                                   //设置3列

    ui.tableWidget->verticalHeader()->hide();                            //隐藏垂直表头

    ui.tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);   //隐藏水平滚动条
    ui.tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);     //隐藏垂直滚动条

    ui.tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);    //禁止竖直滚动
    ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);    //禁止水平滚动
        

    ui.tableWidget->setColumnWidth(0, 182);                                 //添加一列
    ui.tableWidget->setColumnWidth(1, 173);                                 //添加一列
    ui.tableWidget->setColumnWidth(2, 135);                                 //添加一列

    //======table header set======                                          
    ui.tableWidget->horizontalHeader()->setMinimumHeight(35);               //水平表头高度
    ui.tableWidget->horizontalHeader()->setDisabled(true);                  //设置不可编辑
    ui.tableWidget->horizontalHeader()->setSectionsClickable(false);        //设置不可点击
    QFont font("Segoe UI", -1, 50);
    font.setPixelSize(15)
    ui.tableWidget->horizontalHeader()->setFont(font);                      //设置表头字体
    ui.tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(255, 255, 255);"  //背景色
        //"border-radius:0px;"
        "border:0;"                                                                                                 //表头边框
    "min-height:29px;}"                                                                                             //最小高度
    );
    ui.tableWidget->horizontalHeader()->setSectionsMovable(false);                                                  //关闭列宽调整  
    QStringList header;                                                                                             
    header << tr("First Title") << tr("Second Title") << tr("Thread Title");                                        //表头内容
    ui.tableWidget->setHorizontalHeaderLabels(header);                                                              //加载表头内容

    //===Content set===
    ui.tableWidget->setFrameShape(QTableWidget::NoFrame);                                                           //设置无边框
    ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);                                             //禁止编辑
    ui.tableWidget->setStyleSheet(
        "gridline-color:rgb(255,255,255);"                                                                          //分割线颜色
        "background:white;"                                                                                         //背景色
        "color:#666666;"                                                                                            //字体颜色
        "selection-background-color:rgb(255,255,255);"                                                              //选中背景色
        "selection-color:rgb(60,60,60);"                                                                            //选中字体颜色
        );
    ui.tableWidget->setFont(font);                                                                                  //设置字体
    ui.tableWidget->setItem(0, 0, new QTableWidgetItem(tr("1 horizon header")));                                    //内容设置
    ui.tableWidget->setItem(1, 0, new QTableWidgetItem(tr("2 horizon header")));
    ui.tableWidget->setItem(2, 0, new QTableWidgetItem(tr("3 horizon header")));
    ui.tableWidget->setItem(3, 0, new QTableWidgetItem(tr("4 horizon header")));
    ui.tableWidget->setItem(4, 0, new QTableWidgetItem(tr("5 horizon header")));

    ui.tableWidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);                              //居中设置
    ui.tableWidget->item(1, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui.tableWidget->item(2, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui.tableWidget->item(3, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui.tableWidget->item(4, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

    //======Photo loadding===========
    std::vector<QLabel *> label;
    label.clear();
    QLabel *label_N = new QLabel();
    label_N->setPixmap(QPixmap("../no.png"));
    label_N->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

    for (int i = 0; i < 9; ++i)
    {
        QLabel *label_Y = new QLabel();
        label_Y->setPixmap(QPixmap(strPath + "../yes.png"));
        label_Y->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

        label.push_back(label_Y);
    }
    if ((label.size() > 9) || (label.size() == 9))
    {
        ui.tableWidget->setCellWidget(0, 1, label.at(0));
        ui.tableWidget->setCellWidget(1, 1, label.at(1));
        ui.tableWidget->setCellWidget(2, 1, label.at(2));
        ui.tableWidget->setCellWidget(3, 1, label.at(3));
        ui.tableWidget->setCellWidget(0, 2, label.at(4));
        ui.tableWidget->setCellWidget(1, 2, label.at(5));
        ui.tableWidget->setCellWidget(2, 2, label.at(6));
        ui.tableWidget->setCellWidget(3, 2, label.at(7));
        ui.tableWidget->setCellWidget(4, 2, label.at(8));
    }

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...