【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】

2023-12-26 15:12

本文主要是介绍【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Qt编程指南

  • ■ Label
    • ■ QLabel
  • ■ QMovie 显示动画
  • ■ Widget
    • ■ QWidget
    • ■ QTabWidget
    • ■ QTableWidget
    • ■ QListWidget
    • ■ QStackedWidget
    • ■ QCalendarWidget
  • ■ QFrame
    • ■ QFrame
  • ■ View
    • ■ QTableView
    • ■ QColumnView
    • ■ QTreeView
  • ■ Bar
    • ■ QTabBar
    • ■ QToolBar
    • ■ QScrollBar
    • ■ QProgressBar
  • ■ QSlider
  • ■ QScrollArea

■ Label

■ QLabel

    labelImage = new QLabel(this);/* 标签大小为452×132,根据图像的大小来设置 */labelImage->setGeometry(180, 150, 452, 132);/* 设置图像 */labelImage->setPixmap(pixmap);/* 开启允许缩放填充 */labelImage->setScaledContents(true);labelString = new QLabel(this);labelString->setText("标签演示文本");labelString->setGeometry(300, 300, 100, 20);/* 设置位置与大小,下同 */this->setGeometry(0, 0, 800, 480);/* 对象实例化设置显示的位置与大小 */label[i]->setText(strLabelList[i]);/* 标签对齐方式(居中) */label[i]->setAlignment(Qt::AlignCenter);label[i]->setStyleSheet("QLabel{font: normal bold 25px;color:#F0F0F0;border:2px solid #AAAAAA;background:#000000;}");

■ QMovie 显示动画

可以使用QLabel 的成员函数setMovie加载动画,可以播放gif格式的文件:void setMovie(QMovie * movie),需要加入<QMovie>头文件。
QLabel *label = new QLabel; 
/* 定义QMovied对象,并初始化 */
QMovie *movie = new QMovie(":/ssss/C:/Users/wangmumu/Desktop/timg.gif");
/* 播放加载的动画 */
movie->start();
/* 将动画设置到QLabel中 */
label->setMovie(movie);
/* 设置动画大小自适应 */
label->setScaledContents(true);

■ Widget

■ QWidget

vWidget[i] = new QWidget();
vWidget[i]->setAutoFillBackground(true);
该函数用于设置当窗口作为被包含窗口时, 是否需要绘制背景。
注意:QT窗口系统默认状态下, 当一个窗口作为被包含窗口时, 其不再绘制背景, 即使指定了背景绘制参数(如背景颜色、背景图片等)。```c
QWidget{
background-color: rgb(255, 170, 127);
}
//设置widget边框 这个设置会影响Widget上的子控件
ui->widget->setStyleSheet(QString::fromUtf8("border:3px solid blue"));
//设置widget_2边框
ui->widget->setStyleSheet(QString::fromUtf8("#widget_2{border:3px solid red}"));background-color: rgb(52, 57, 71);
border-bottom-left-radius: 20px;

■ QTabWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0, 0, 800, 480);widget = new QWidget(this);/* 居中 */this->setCentralWidget(widget);/* 多页面小部件 */tabWidget = new QTabWidget();/* 水平布局实例化 */hBoxLayout = new QHBoxLayout();QList <QString>strLabelList;strLabelList<<"标签一"<<"标签二"<<"标签三";QList <QString>strTabList;strTabList<<"页面一"<<"页面二"<<"页面三";QList <QString>iconList;iconList<<":/icons/icon1"<<":/icons/icon2"<<":/icons/icon3";for (int i = 0; i < 3; i++) {label[i] = new QLabel();/* 设置标签文本 */label[i]->setText(strLabelList[i]);/* 标签对齐方式(居中) */label[i]->setAlignment(Qt::AlignCenter);/* 添加页面 */tabWidget->addTab(label[i],QIcon(iconList[i]),strTabList[i]);}/* 是否添加关闭按钮 *///tabWidget->setTabsClosable(true);/* 将tabWidget水平直排布 */hBoxLayout->addWidget(tabWidget);/* 将垂直布局设置到widget */widget->setLayout(hBoxLayout);
}
MainWindow::~MainWindow()
{
}

■ QTableWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{/* 设置主窗体的大小与位置 */this->setGeometry(0, 0, 800, 480);/* 实例化 */tableWidget = new QTableWidget(this);/* 设置tableWidget表居中 */setCentralWidget(tableWidget);/* 设置列数 */tableWidget->setColumnCount(2);/* 设置行数 */tableWidget->setRowCount(2);/* 使用标签设置水平标题标签 */tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别");/* 字符串类型链表 */QList <QString> strList;strList<<"小明"<<"小红"<<"男"<<"女";for (int i = 0; i < 4; i++) {/* 实例化 */tableWidgetItem[i] = new QTableWidgetItem(strList[i]);/* 设置文本居中对齐 */tableWidgetItem[i]->setTextAlignment(Qt::AlignCenter);}/* 插入数据,表的index就是一个二维数组数据 */tableWidget->setItem(0, 0, tableWidgetItem[0]);tableWidget->setItem(1, 0, tableWidgetItem[1]);tableWidget->setItem(0, 1, tableWidgetItem[2]);tableWidget->setItem(1, 1, tableWidgetItem[3]);
}
MainWindow::~MainWindow()
{
}

■ QListWidget

//添加
void ProManageEdit::add(QStringList stlist)
{QListWidgetItem *item0 = new QListWidgetItem;ListManagEdit * editWidget = new ListManagEdit(this);editWidget->update(stlist);connect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));ui->listWidget->addItem(item0);ui->listWidget->setItemWidget(item0,editWidget);
}
//删除
void ProManageEdit::deleteStep(int step)
{auto editWidget = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(ui->listWidget->item(step)));disconnect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));ui->listWidget->removeItemWidget(ui->listWidget->item(step));
}//修改数据 或者交换
void ProManageEdit::swap(int fromstep, QStringList fromstlist, int tostep, QStringList tostlist)
{QListWidgetItem* fromitem = ui->listWidget->item(fromstep);QListWidgetItem* toitem = ui->listWidget->item(tostep);auto fromTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(fromitem));auto toTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(toitem));fromTest->update(tostlist);toTest->update(fromstlist);
}
listWidget->item(i)->setTextColor(QColor(22, 22, 22, 225));
ui->listWidget->setSpacing(5); // 设置边距离
设置每个QListWidgetItem 之间的距离
QListWidget 对不齐问题,是因为进度条导致的解决办法是/屏蔽垂直滚动条   
ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //屏蔽垂直滚动条
1、首先是实现插入项的功能,也就是新增一项
void Widget::on_InsertBtn_clicked()
{//首先是获取项的总数int itemCount = ui->listWidget->count();//new一个空的子项QListWidgetItem * item = new QListWidgetItem;//初始化空的子项,比如设置颜色,高度,内容等等//设置大小item->setSizeHint(QSize(ui->listWidget->width(),50));//设置内容item->setText(QString("自定义子项%1").arg(itemCount));//设置属性item->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled|Qt::ItemIsUserCheckable);//双击可被编辑,可选中item->setCheckState(Qt::Unchecked);//默认 不选中状态//最后将初始化好的子项插入到listWidget控件中ui->listWidget->addItem(item);
}2、删除项,删除当前选中的项,代码如下:
void Widget::on_DelBtn_clicked()
{//先判断当前是否选中,如果没有选中则提示if(!ui->listWidget->currentItem()){QMessageBox::warning(this,"警告","请先选中当前项再进行删除!");return;}//获取当前想要删除的子项QListWidgetItem * delItem = ui->listWidget->takeItem(ui->listWidget->currentRow());if(delItem)//注意需要手动删除delete delItem;
}3、清空列表,调用clear()函数即可。
void Widget::on_ClearBtn_clicked()
{ui->listWidget->clear();
}
4、状态栏的显示
void Widget::on_listWidget_currentRowChanged(int currentRow)
{//如果没有子项,直接退出if(currentRow<0)return;//获取当前项QListWidgetItem *curItem = ui->listWidget->currentItem();//获取内容QString curText = curItem->text();//在状态栏进行显示内容和选中状态QString stateText;stateText = (QString("当前选中第%1项:").arg(currentRow)+curText);if(curItem->checkState() == Qt::Checked)stateText += "  选中";elsestateText += "  没有选中";ui->StateLabel->setText(stateText);
}
5、排序ui->listWidget->setSortingEnabled(true);//生效排序ui->listWidget->sortItems(Qt::DescendingOrder); //降序6、显示方式ui->listWidget->setViewMode(QListView::IconMode);7、初始化
void Widget::InitListwidget()
{//自定义菜单策略ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);//设置视图显示方式为图标模式(图标在上,文字在下)ui->listWidget->setViewMode(QListView::IconMode);//设置可以选择多项ui->listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);//设置背景颜色,使每个子项之间的间距有颜色区别//ui->listWidget->setStyleSheet("background:transparent;");//设置无边框ui->listWidget->setFrameShape(QFrame::NoFrame);//设置子项不能被拖拽ui->listWidget->setDragEnabled(false);//设置子项每个图标的大小ui->listWidget->setIconSize(QSize(200,200));//设置每个子项的大小固定ui->listWidget->setUniformItemSizes(true);//设置QLisView大小改变时,图标的调整模式,默认是固定的,可以改成自动调整ui->listWidget->setResizeMode(QListView::Adjust);//设置每个子项之间的间距ui->listWidget->setSpacing(10);//设置样式,直接在函数中设置ui->listWidget->setStyleSheet("QListWidget{border:1px solid gray; color:black;background:transparent;}""QListWidget::Item{padding-top:20px; padding-bottom:4px; }""QListWidget::Item:hover{background:skyblue; }""QListWidget::item:selected{background:lightgray; color:red; }""QListWidget::item:selected:!active{border-width:0px; background:lightgreen; }");}
注意点:
int n=ui->listWidget->count();//获取item的总数
//删去所有item
for(int i=0;i<n;i++)
{/*使用takeItem(row)函数将QListWidget中的第row个item移除,移除需要使用delete手动释放其在堆上占用的空间*/ //这里是0,不是i,因为每移除一个item都会导致每个item的row发生变化QListWidgetItem *item = ui->listWidget->takeItem(0);  delete item;
}QListWidgetItem* item = ui->listWidget->currentItem();//被选中或背点击的item删除
// QListWidgetItem* item = ui->listWidget->takeItem(2);//指定删除
ui->listWidget->removeItemWidget(item);
delete item;    

■ QStackedWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0, 0, 800, 480);/* widget小部件实例化 */widget = new QWidget(this);/* 设置居中 */this->setCentralWidget(widget);/* 垂直布局实例化 */hBoxLayout = new QHBoxLayout();/* 堆栈部件实例化 */stackedWidget = new QStackedWidget();/* 列表实例化 */listWidget = new QListWidget();QList <QString>strListWidgetList;strListWidgetList<<"窗口一"<<"窗口二"<<"窗口三";for (int i = 0; i < 3; i++){/* listWidget插入项 */listWidget->insertItem(i,strListWidgetList[i]);}QList <QString>strLabelList;strLabelList<<"标签一"<<"标签二"<<"标签三";for (int i = 0; i < 3; i++){label[i] = new QLabel();/* 设置标签文本 */label[i]->setText(strLabelList[i]);/* 标签对齐方式(居中) */label[i]->setAlignment(Qt::AlignCenter);/* 添加页面 */stackedWidget->addWidget(label[i]);}/* 设置列表的最大宽度 */listWidget->setMaximumWidth(200);/* 添加到水平布局 */hBoxLayout->addWidget(listWidget);hBoxLayout->addWidget(stackedWidget);/* 将widget的布局设置成hboxLayout */widget->setLayout(hBoxLayout);/* 利用listWidget的信号函数currentRowChanged()与* 槽函数setCurrentIndex(),进行信号与槽连接*/connect(listWidget, SIGNAL(currentRowChanged(int)),stackedWidget, SLOT(setCurrentIndex(int)));
}
MainWindow::~MainWindow()
{
}

■ QCalendarWidget

	calendarWidget = new QCalendarWidget(this);calendarWidget->setGeometry(200, 20, 400, 300);QFont font;/* 设置日历里字体的大小为10像素 */font.setPixelSize(10);calendarWidget->setFont(font);/* 对象实例化设置显示的位置与大小 */pushButton = new QPushButton("回到当前日期",this);pushButton->setGeometry(200, 350, 100, 30);/* 对象实例化设置显示的位置与大小 */label = new QLabel(this);label->setGeometry(400, 350, 400, 30);QString str = "当前选择的日期:"+ calendarWidget->selectedDate().toString();label->setText(str);/* 信号槽连接 */connect(calendarWidget, SIGNAL(selectionChanged()),this, SLOT(calendarWidgetSelectionChanged()));connect(pushButton, SIGNAL(clicked()),this, SLOT(pushButtonClicked()));MainWindow::~MainWindow()
{}
void MainWindow::calendarWidgetSelectionChanged()
{/* 当日历点击改变当前选择的期时,更新Label的显示内容 */QString str = "当前选择的日期:"+ calendarWidget->selectedDate().toString();label->setText(str);
}void MainWindow::pushButtonClicked()
{/* 设置当前选定的日期为系统的QDate */calendarWidget->setSelectedDate(QDate::currentDate());
}

■ QFrame

■ QFrame

QFrame *frame = new QFrame; 
frame->resize(400,700); 
QPixmap pixmap(":/images/frame.png");//设定图片
frame->setPalette(palette);//设置窗口调色板为palette,窗口和画笔相关联
frame->setMask(pixmap.mask()); //可以将图片中透明部分显示为透明的
frame->setAutoFillBackground(true);//设置窗体自动填充背景
frame->show();

■ View

■ QTableView

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{/* 设置窗口的位置与大小 */this->setGeometry(0, 0, 800, 480);tableView = new QTableView(this);setCentralWidget(tableView);/* 显示网格线 */tableView->setShowGrid(false); //trueQStandardItemModel* model = new QStandardItemModel();QStringList labels =QObject::tr("语文,数学,英语,物理").simplified().split(",");/* 设置水平头标签 */model->setHorizontalHeaderLabels(labels);/* item */QStandardItem* item = 0;/* model插入项内容 */for(int i = 0; i < 5; i++){item = new QStandardItem("80");model->setItem(i, 0, item);item = new QStandardItem("99");model->setItem(i, 1, item);item = new QStandardItem("100");model->setItem(i, 2, item);}/* 将model设置给tableView */tableView->setModel(model);/* 平均分列 */tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);/* 平均分行 */tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);tableView->setFocusPolicy(Qt::NoFocus); // 取消Item选中后的虚线边框tableView->verticalHeader()->setHidden(true); // 隐藏默认行号//  tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // 设置选中一整行tableView->setSelectionMode (QAbstractItemView::SingleSelection); // 只允许选中单行
}取消Item选中后的虚线边框
tableView->setFocusPolicy(Qt::NoFocus); // 取消Item选中后的虚线边框

■ QColumnView

#include "mainwindow.h"
#include <QStandardItem>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{/* 设置主窗体显示位置与大小 */this->setGeometry(0, 0, 800, 480);QStandardItemModel *model = new QStandardItemModel;/* 省份 */QStandardItem *province = new QStandardItem("广东省");/* 城市 */QStandardItem *city1 = new QStandardItem("茂名市");QStandardItem *city2 = new QStandardItem("中山市");/* 添加城市到省份下 */province->appendRow(city1);province->appendRow(city2);QStandardItem *town1 = new QStandardItem("电白镇");QStandardItem *town2 = new QStandardItem("南头镇");/* 添加城镇到城市下 */city1->appendRow(town1);city2->appendRow(town2);columnView = new QColumnView;/* 建立model */model->appendRow(province);/* 设置model */columnView->setModel(model);/* 设置居中 */setCentralWidget(columnView);
}
MainWindow::~MainWindow()
{
}

■ QTreeView

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{/* 设置窗口的位置与大小 */this->setGeometry(0, 0, 800, 480);/* 实例化QTreeView对象 */treeView = new QTreeView(this);/* 居中 */setCentralWidget(treeView);/* 构建Model */QStandardItemModel *sdiModel = new QStandardItemModel(treeView);sdiModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("标题")<< QStringLiteral("名称"));for(int i = 0; i < 5; i++) {/* 一级标题 */QList<QStandardItem*> items1;QStandardItem* item1 =new QStandardItem(QString::number(i));QStandardItem* item2 =new QStandardItem(QStringLiteral("一级标题"));/* 添加项一 */items1.append(item1);/* 添加项二 */items1.append(item2);/* appendRow方法添加到model上 */sdiModel->appendRow(items1);for(int j = 0; j < 5; j++) {/* 在一级标题后面插入二级标题 */QList<QStandardItem*> items2;QStandardItem* item3 =new QStandardItem(QString::number(j));QStandardItem* item4 =new QStandardItem(QStringLiteral("二级标题"));items2.append(item3);items2.append(item4);/* 使用appendRow方法添加到item1上 */item1->appendRow(items2);}}/* 设置Model给treeView */treeView->setModel(sdiModel);
}
MainWindow::~MainWindow()
{
}

■ Bar

■ QTabBar

#基本样式设置
QTabBar::tab{font: 75 12pt "Arial";        #设置字体width:84px;                    #设置宽度height:30;                     #设置高度margin-top:5px;             #设置边距margin-right:1px;margin-left:1px;margin-bottom:0px;
}#最左边标签未选中时显示(因为需要左边打圆角,所以和其他背景图片不一样,注意字体颜色)
QTabBar::tab:first:!selected {color:#000000;border-image: url(:/common/images/common/左_normal.png);
}
#最左边标签被选中
QTabBar::tab:first:selected {color:#FFFFFF;border-image: url(:/common/images/common/左_pressed.png);
}
#最右边标签未选中时显示(因为需要右边打圆角,所以和其他背景图片不一样)
QTabBar::tab:last:!selected {color:#000000;border-image: url(:/common/images/common/右_normal.png);
}
#最右边标签被选中
QTabBar::tab:last:selected {color:#FFFFFF;border-image: url(:/common/images/common/右_pressed.png);
}
#中间的标签未被选择的显示
QTabBar::tab:!selected {color:#000000;border-image: url(:/common/images/common/中_normal.png);
}
#中间标签选中显示的图片
QTabBar::tab:selected {color:#FFFFFF;border-image: url(:/common/images/common/中_pressed.png);
}tab标签居中显示
QTabWidget::tab-bar { alignment: center; 
} 5 鼠标停留tab标签的效果
鼠标放在标签上,可设置标签颜色或者背景图片
QTabBar::tab:hover{background:rgb(255, 255, 255, 100);
}
6 去掉tabwidget的widget边框
QTabWidget::pane{border:none;
}QTabBar::tab{background-color: rgb(255, 255, 255);
}QTabBar::tab:hover{background:rgb(46, 207, 38, 100);
}QTabBar::tab:selected {background:rgb(25, 34, 231, 100);
}QTabWidget:pane{ border: 1px solid red; top: -1px;background-color:grey;
}QTabBar::tab{height:22px; background-color:grey; margin-right: 2px; margin-bottom:-2px;
}QTabBar::tab:selected{border:1px solid red;border-bottom-color: none;
}QTabBar::tab:!selected{border-bottom: 3px solid red;
}

■ QToolBar

void frmIconHelper::initWidget1()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn11);btnGroup->addButton(ui->btn12);btnGroup->addButton(ui->btn13);btnGroup->addButton(ui->btn14);//设置按钮可选中以及图标样式initBtn(btnGroup, true);//设置弱属性以便应用样式ui->widget1->setProperty("flag", "left");IconHelper::StyleColor styleColor;styleColor.defaultBorder = true;styleColor.position = "left";styleColor.iconSize = 18;styleColor.iconWidth = 30;styleColor.iconHeight = 25;styleColor.borderWidth = 4;IconHelper::setStyle(ui->widget1, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn11->click();
}void frmIconHelper::initWidget2()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn21);btnGroup->addButton(ui->btn22);btnGroup->addButton(ui->btn23);btnGroup->addButton(ui->btn24);//设置按钮可选中以及图标样式initBtn(btnGroup, true);//设置弱属性以便应用样式ui->widget2->setProperty("flag", "right");IconHelper::StyleColor styleColor;styleColor.defaultBorder = true;styleColor.position = "right";styleColor.iconSize = 18;styleColor.iconWidth = 25;styleColor.iconHeight = 20;styleColor.borderWidth = 4;styleColor.borderColor = "#32B9CF";styleColor.setColor("#187294", "#B6D7E3", "#145C75", "#F0F0F0");IconHelper::setStyle(ui->widget2, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn22->click();
}
void frmIconHelper::initWidget3()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn31);btnGroup->addButton(ui->btn32);btnGroup->addButton(ui->btn33);btnGroup->addButton(ui->btn34);//设置按钮可选中以及图标样式initBtn(btnGroup, false);//设置弱属性以便应用样式ui->widget3->setProperty("flag", "left");IconHelper::StyleColor styleColor;styleColor.position = "left";styleColor.iconSize = 30;styleColor.iconWidth = 40;styleColor.iconHeight = 40;styleColor.borderWidth = 3;styleColor.borderColor = "#609EE9";IconHelper::setStyle(ui->widget3, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn33->click();
}
void frmIconHelper::initWidget4()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn41);btnGroup->addButton(ui->btn42);btnGroup->addButton(ui->btn43);btnGroup->addButton(ui->btn44);//设置按钮可选中以及图标样式initBtn(btnGroup, false);//设置弱属性以便应用样式ui->widget4->setProperty("flag", "right");IconHelper::StyleColor styleColor;styleColor.position = "right";styleColor.iconSize = 30;styleColor.iconWidth = 40;styleColor.iconHeight = 40;styleColor.borderWidth = 3;styleColor.borderColor = "#F7AE13";styleColor.setColor("#FCDC97", "#54626F", "#FFF0BC", "#54626F");IconHelper::setStyle(ui->widget4, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn44->click();
}
void frmIconHelper::initWidget5()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn51);btnGroup->addButton(ui->btn52);btnGroup->addButton(ui->btn53);btnGroup->addButton(ui->btn54);//设置按钮可选中以及图标样式initBtn(btnGroup, false);//设置弱属性以便应用样式ui->widget5->setProperty("flag", "top");//设置整体按钮组样式IconHelper::StyleColor styleColor;styleColor.defaultBorder = true;styleColor.position = "top";styleColor.iconSize = 25;styleColor.iconWidth = 25;styleColor.iconHeight = 25;styleColor.borderWidth = 3;IconHelper::setStyle(ui->widget5, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn51->click();
}void frmIconHelper::initWidget6()
{//加入按钮组自动互斥QButtonGroup *btnGroup = new QButtonGroup(this);btnGroup->addButton(ui->btn61);btnGroup->addButton(ui->btn62);btnGroup->addButton(ui->btn63);btnGroup->addButton(ui->btn64);//设置按钮可选中以及图标样式initBtn(btnGroup, false);//设置弱属性以便应用样式ui->widget6->setProperty("flag", "bottom");//设置整体按钮组样式IconHelper::StyleColor styleColor;styleColor.defaultBorder = true;styleColor.position = "bottom";styleColor.iconSize = 25;styleColor.iconWidth = 25;styleColor.iconHeight = 25;styleColor.borderWidth = 3;styleColor.borderColor = "#A279C5";styleColor.setColor("#292929", "#B6D7E3", "#10689A", "#F0F0F0");IconHelper::setStyle(ui->widget6, btnGroup->buttons(), icons, styleColor);//默认选中某个按钮ui->btn63->click();
}
void frmIconHelper::initBtn(QButtonGroup *btnGroup, bool textBesideIcon)
{QList<QAbstractButton *> btns = btnGroup->buttons();foreach (QAbstractButton *btn, btns) {QToolButton *b = (QToolButton *)btn;//关联按钮单击事件connect(b, SIGNAL(clicked(bool)), this, SLOT(btnClicked()));b->setCheckable(true);b->setToolButtonStyle(textBesideIcon ? Qt::ToolButtonTextBesideIcon : Qt::ToolButtonTextUnderIcon);}
}

■ QScrollBar

 /* 实例化垂直滚动条及设置位置大小 */verticalScrollBar = new QScrollBar(Qt::Vertical, this);verticalScrollBar->setGeometry(770, 0, 30, 480);/* 实例化,标签文本 */label = new QLabel(this);/* 设置文本 */label->setText("这是一个测试");/* 设置位置大小 */label->setGeometry(300, 200, 100, 20);这里插入代码片

■ QProgressBar

QProgressBar {   border: 2px solid grey;   border-radius: 5px;   background-color: #FFFFFF;
}
QProgressBar::chunk {   border-radius: 5px;background-color: #05B8CC;   width: 20px;
}QProgressBar {   border: px solid grey;   border-radius: 5px;   text-align: center;
}
QProgressBar::chunk{border-radius: 5px;background:qlineargradient(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 red,stop:1 blue);
}第一步:
height:30;
background: red;
color:rgb(255,255,0);第二步:
border:1px solid #FFFFFF;
height:30;
background: red;
color:rgb(255,255,0);第三步:
border:1px solid #FFFFFF;
height:30;
background: red;
text-align: center;   // 控制文本位置left center right
color:rgb(255,255,0);
border-radius:10px;第四步:添加斑马线。
QProgressBar{
border:1px solid #FFFFFF;""height:30;""background:red;""text-align:center;""color:rgb(255,255,0);""border-radius:10px;}""QProgressBar::chunk{""border-radius:5px;"    // 斑马线圆角"border:1px solid black;" // 黑边,默认无边"background-color:skyblue;""width:8px;margin:0.5px;
}第五步:
QProgressBar::chunk{
border-radius: 5px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 red,stop:1 blue);
}

■ QSlider

void MainWindow::horizontalSliderValueChanged(int val)
{/* 当水平滑动条的值改变时,改变垂直滑动条的值 */verticalSlider->setSliderPosition(val);/* 将int类型转变成字符 */QString str = "滑动条值:" + QString::number(val);/* 显示当前垂直或水平滑动条的值 */label->setText(str);
}void MainWindow::verticalSliderValueChanged(int val)
{/* 当垂直滑动条的值改变时,改变水平滑动条的值 */horizontalSlider->setSliderPosition(val);
}/* 主窗体设置位置与大小 */this->setGeometry(0, 0, 800, 480);

■ QScrollArea

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0, 0, 800, 480);scrollArea = new QScrollArea(this);/* 设置滚动区域为700*380 */scrollArea->setGeometry(50, 50, 700, 380);label = new QLabel();/* label显示的lantingxu.png图片分辨率为1076*500 */QImage image(":/images/lantingxu.png");label->setPixmap(QPixmap::fromImage(image));scrollArea->setWidget(label);
}
MainWindow::~MainWindow()
{
}

这篇关于【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539890

相关文章

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节