Qt常用控件

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文件相对路径的方式.
  • 资源文件添加方法:
    1. 在工程里将需要用到的图片放到集中的文件夹.
    2. 添加Qt Resource File, 设置一个文件名
    3. 在*.qrc上双击或者"open in editor"菜单
    4. 添加-添加前缀
    5. 添加资源文件
    6. 编译保存一下
    7. 此后编译出的可执行文件包含资源文件, 因此大一些

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));
}

Qt常用控件的更多相关文章

  1. QT 常用控件二

    QT提供QHBoxLayout类.QVBoxlayout类及QGridLayout类等的基本布局管理,分别是水平排列布局,垂直排列布局和网格排列布局 addWidget()方法用于向布局中加入需要布局 ...

  2. Qt——常用控件样式

    下面是我设计.调整.修改的Qt控件样式,仅供参考. Github地址:https://github.com/ikongziming/QtDemo/tree/master/StyleSheetDemo ...

  3. QT常用控件(三)——自定义控件封装

    引言 Qt已经提供了很多的基础控件供开发使用,而Qt原生的控件有时候并不能满足我们的需求,特别是在工业的运用上,比如我们需要一个日期时间的选择器,Qt虽然已经提供了原生的QDateTime控件,但这个 ...

  4. QT 常用控件一

    QWidget 创建窗口 如果widget未使用腹肌进行创建,则在显示时视为窗口或顶层widget. 由于顶层widget没有父级对象类来确保在其不再使用时删除,所以需要开发人员在应用程序中对其进程跟 ...

  5. QT+常用控件_Line Edit

    #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #incl ...

  6. QT常用控件(一)——菜单栏和对话框

    引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status ...

  7. QT_7_资源文件_对话框_QMessageBox_界面布局_常用控件

    资源文件 1.1. 将资源导入到项目下 1.2. 添加文件—>Qt -->Qt Resource File 1.3. 起名称 res ,生成res.qrc文件 1.4. 右键 open i ...

  8. android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

    第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\Dig ...

  9. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

随机推荐

  1. Android SimpleAdapter的参数

    1.作用是ArrayList和 ListView的桥梁.这个ArrayList里边的每一项都是一个Map<String,?>类型.       ArrayList当中的每一项 Map对象都 ...

  2. 【Python】Java程序员学习Python(二)— 开发环境搭建

    巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...

  3. MySQL 、SQL MS Access、和 SQL Server 数据类型

    MySQL 数据类型 在 MySQL 中,有三种主要的类型:Text(文本).Number(数字)和 Date/Time(日期/时间)类型. Text 类型: 数据类型 描述 CHAR(size) 保 ...

  4. 记开发个人图书收藏清单小程序开发(七)DB设计

    前面的书房初始化的前端信息已经完善,所以现在开始实现DB的Script部分. 新增Action:Shelf_Init.sql svc.sql CREATE SCHEMA [svc] AUTHORIZA ...

  5. 分析VoltDB内存数据库

    转自https://blog.csdn.net/olidrop/article/details/7065384 https://blog.csdn.net/ransom0512/article/det ...

  6. openweathermap-免费的天气预报接口

    openweathermap-免费的天气预报接口 其官方网址为:http://www.openweathermap.org/api 静态截图: 具备以下的一些特点: 1. Current weathe ...

  7. shell study

    目录 shell记录 执行脚本 变量使用 注释 shell传递参数 运算符 echo printf test 流程控制 if ... else ... for while until case 跳出循 ...

  8. 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象

    一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...

  9. 成为技术领导者笔记--领导的MOI模型

    一. 想让周围环境发生变化,环境必须包含三个条件: M:激励(Motivation)---有奖品或有困难,这样才对相关人员有推动力或吸引力. O:组织(organization)---利用现有的组织结 ...

  10. file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known

    请求页面时候报错 file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not know ...