【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

相关文章

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Qt之QMessageBox的具体使用

《Qt之QMessageBox的具体使用》本文介绍Qt中QMessageBox类的使用,用于弹出提示、警告、错误等模态对话框,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.简单介绍3.常见函数4.按钮类型(QMessage::StandardButton)5.分步骤实现弹窗6.总结1.引言

Qt中Qfile类的使用

《Qt中Qfile类的使用》很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件,本文主要介绍了Qt中Qfile类的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.QFile文件操作3.演示示例3.1实验一3.2实验二【演示 QFile 读写二进制文件的过程】4.

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

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

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