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. 如何优雅使用Coursera ? —— Coursera 视频缓冲 & 字幕遮挡

    Coursera 视频缓冲 其实这个问题的根本是coursera上视频源d3c33hcgiwev3.cloudfront.net被墙,而ss的pac并未及时更新所导致的. 1 chrome 插件 - ...

  2. Centos 安装Dokuwiki

    一.前言 DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.DokuWiki程序小巧而功能强大.灵活,适合中小团队和个人网站知识库的管理. 二.环境 在centos6 下安装apache ...

  3. python基础_类型_dict

    #dict字典,其实与其叫字典不如叫key-value更合适,不知道这个名是怎么来的,这个可以用来搞用户名和密码,不过搞这个不用数据库是不是显得太low了 #用花括号{}扩起来,逗号分隔每个元素,每个 ...

  4. windows下安装Mysql(图文详解)

      博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...

  5. Linux系统锁定关键文件

    锁定系统关键文件 1.密码.账号文件 chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab 加锁:chattr ...

  6. matlab规定小数点保留4位且非科学计数法格式存储txt

    matlab 不保存为科学计数法 http://blog.sciencenet.cn/blog-472136-402727.html 经常在表示matlab值时,它总会把一些小于1的大于1000的数使 ...

  7. SOAR平台初探(一)

    1.前言 Security Orchestration, Automation and Response(SOAR)安全编排和自动化响应,是Gartner2017年提出的新概念.Gartner预计到2 ...

  8. December 02nd 2016 Week 49th Friday

    People will fall for its appearance while driving passionately. 观者倾心,驭者动魄. An advertisement of Merce ...

  9. 内置函数 sorted

    内置函数 sorted 语法: sorted(iterable,key = None,reverse= false)iterable: 可迭代的对象key:排序规则(排序函数),在sorted内部将& ...

  10. 1068. [SCOI2007]压缩【区间DP】

    Description 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小 写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上 ...