本文主要是介绍【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】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!