西安网站开发,个人主页界面网站,代运营公司是怎么运营的,潍坊模板开发建站OVERVIEW 自定义封装界面类1.QListWidget2.QTreeWidget3.QTableWidget4.StackedWidget5.Others6.自定义封装界面类-显示效果#xff08;1#xff09;添加设计师界面类#xff08;2#xff09;在ui中设计自定义界面#xff08;3#xff09;在需要使用的界面中添加#xf… OVERVIEW 自定义封装界面类1.QListWidget2.QTreeWidget3.QTableWidget4.StackedWidget5.Others6.自定义封装界面类-显示效果1添加设计师界面类2在ui中设计自定义界面3在需要使用的界面中添加4提升为自定义控件的类5测试显示效果 7.自义封装界面类-功能实现1具体需要的功能分析2功能1实现sliderbar.cpp 3功能2实现sliderbar.cpp 4对外预留接口sliderbar.hsliderbar.cpp 自定义封装界面类 1.QListWidget
//1.QListWidget
//方式1
QListWidgetItem *item1 new QListWidgetItem(this is the first line.);
item1-setTextAlignment(Qt::AlignHCenter);
ui-listWidget-addItem(item1);
QListWidgetItem *item2 new QListWidgetItem(this is the second line.);
item2-setTextAlignment(Qt::AlignHCenter);
ui-listWidget-addItem(item2);
QListWidgetItem *item3 new QListWidgetItem(this is the third line.);
item3-setTextAlignment(Qt::AlignHCenter);
ui-listWidget-addItem(item3);
//方式2 liststring
QStringList list;
for (int i 0; i 4; i) {QString str;str.sprintf(this is the %dth sentence., i);list str;
}
ui-listWidget-addItems(list);2.QTreeWidget
//2.QTreeWidget
//header 设置表头
ui-treeWidget-setHeaderLabels(QStringList() 英雄 英雄介绍);
//root 设置根节点
QTreeWidgetItem *titem1 new QTreeWidgetItem(QStringList() 力量);
QTreeWidgetItem *titem2 new QTreeWidgetItem(QStringList() 敏捷);
QTreeWidgetItem *titem3 new QTreeWidgetItem(QStringList() 智力);
ui-treeWidget-addTopLevelItem(titem1);
ui-treeWidget-addTopLevelItem(titem2);
ui-treeWidget-addTopLevelItem(titem3);
//leaf 设置叶子节点
QStringList tlist;
tlist 刚被猪 前排坦克 能在吸收伤害的同时可观的范围输出;
QTreeWidgetItem *titem1_1 new QTreeWidgetItem(tlist);
tlist.clear();
tlist 船长 前排坦克 能肉能输出能控场的全能英雄;
QTreeWidgetItem *titem1_2 new QTreeWidgetItem(tlist);
tlist.clear();tlist 月骑 中排物理输出 可以使用分裂利刃攻击多个目标;
QTreeWidgetItem *titem2_1 new QTreeWidgetItem(tlist);
tlist.clear();
tlist 小鱼人 前排战士 擅长偷取敌人属性来增强自身战斗力;
QTreeWidgetItem *titem2_2 new QTreeWidgetItem(tlist);
tlist.clear();tlist 死灵法师 前排法师坦克 魔法抗性较高 拥有治疗技能;
QTreeWidgetItem *titem3_1 new QTreeWidgetItem(tlist);
tlist.clear();
tlist 巫医 后排辅助法师 可以使用奇特的巫术诅咒敌人与治疗队友;
QTreeWidgetItem *titem3_2 new QTreeWidgetItem(tlist);
tlist.clear();titem1-addChild(titem1_1);
titem1-addChild(titem1_2);
titem2-addChild(titem2_1);
titem2-addChild(titem2_2);
titem3-addChild(titem3_1);
titem3-addChild(titem3_2);3.QTableWidget
//3.QTableWidget
int col 3;
int row 5;
//设置列的数目
ui-tableWidget-setColumnCount(col);
//设置水平表头
ui-tableWidget-setHorizontalHeaderLabels(QStringList() name gentle age);
//设置行的数目
ui-tableWidget-setRowCount(row);
//设置正文
//ui-tableWidget-setItem(0, 0, new QTableWidgetItem(tom));
//ui-tableWidget-setItem(0, 1, new QTableWidgetItem(male));
//ui-tableWidget-setItem(0, 2, new QTableWidgetItem(18));
QStringList nameList, gentleList;
nameList tom jack lucy lily bob;
gentleList male male female female male;
for (int i 0; i row; i) {int idx 0;ui-tableWidget-setItem(i, idx, new QTableWidgetItem(nameList[i]));ui-tableWidget-setItem(i, idx, new QTableWidgetItem(gentleList.at(i)));ui-tableWidget-setItem(i, idx, new QTableWidgetItem(QString::number(i 18)));
}4.StackedWidget
//4.StackedWidgetui-stackedWidget-setCurrentIndex(0);connect(ui-btn_scrollbtns, QPushButton::clicked, this, [](){ui-stackedWidget-setCurrentIndex(2);});connect(ui-btn_brosers, QPushButton::clicked, this, [](){ui-stackedWidget-setCurrentIndex(1);});connect(ui-btn_groups, QPushButton::clicked, this, [](){ui-stackedWidget-setCurrentIndex(0);});
}5.Others
//combo box
ui-comboBox-addItem(奔驰);
ui-comboBox-addItem(宝马);
ui-comboBox-addItem(保时捷);
connect(ui-btn_autoselect, QPushButton::clicked, this, [](){ui-comboBox-setCurrentIndex(2);//ui-comboBox-setCurrentText(保时捷);
});
//QLabel1
ui-label_img-setPixmap(QPixmap(:/res/img/backgroud.jpg));
ui-label_img-setScaledContents(true);
//QLabel2
QMovie *gif new QMovie(:/res/img/xiongmaoren.gif);
ui-label_img_2-setMovie(gif);
gif-start();6.自定义封装界面类-显示效果
创建自定义封装界面类步骤一般如下
1添加设计师界面类
添加新文件Qt-设计师界面类 根据需要选择界面模板即可这里选择Widget作为界面模板进行创建 根据语义为自定义的界面类确定类名 选择好会后qtcreator会自动的添加 .h、 .cpp、.ui 文件并可以在新建的 .ui 文件中设计自定义的控件
2在ui中设计自定义界面
在ui界面中设计好自定义控件的界面如下所示 3在需要使用的界面中添加
在需要使用的界面中添加自定义控件类的父类作为占位控件详细操作如下
首先观察到自定义的界面类属于QWidget类型 开始向需要使用到自定义控件界面类的ui文件中添加一个自定义控件的父类这里添加的为Widget控件/QWidget类如下图所示 4提升为自定义控件的类
在ui界面中右键wedget控件将其提升为自定义控件的类SliderBar 在 “提升的窗口部件” 窗口中填写提升的类名称此处为SliderBar并勾选上全局包含后这样再次需要选择提升时就可以快速选择点击右下角的添加按钮 成功添加到提升的类列表中如下所示 点击列表中的SliderBar后并点击提升按钮发现原来为QWidget的占位用的控件已经被提升为了自定义控件类SliderBar 5测试显示效果
直接运行程序显示Mainwindows在占位控件处已经显示出了自定义控件之前设计的样式如下图所示 7.自义封装界面类-功能实现
经过前面ui界面的设计与类的提升自定义控件的显示已经完成但是在滑动slider控件时并没有对应的数值出现变化
为了实现相应的控件逻辑功能下面还需要编写 .h 与 .cpp 文件内容进行功能上的自定义实现步骤如下所示
1具体需要的功能分析
SliderBar控件类需要实现的功能分为两条逻辑
功能1相应的在修改左侧spinBox的数值时右侧的slider按钮要能够自己根据数值滑动起来功能2在滑动slider按钮时左侧spinBox的数字要能够对应上具体的数值
2功能1实现
在修改spinBox数值时控件会发出一些信号只要捕获到这些信号就能够实现修改spinBox数值的同时右侧的slider能够自己滑动
在QT的帮组手册中可以查询到关于QSpinBox数值修改时发出的一些信号相关的signal 可以发现当SpinBox控件数值修改时会触发两个同名重载的信号函数这意味着在利用信号与槽机制实现对应的功能时需要利用函数指针指向指定的函数
//重载的两个信号函数
void valueChanged(const QString text)
void valueChanged(int i)sliderbar.cpp
修改 sliderbar.cpp 中的代码实现当spinBox数值被修改时slider可以自动移动的功能根据QSlider控件的槽函数修改其value值
#include sliderbar.h
#include ui_sliderbar.hSliderBar::SliderBar(QWidget *parent):QWidget(parent), ui(new Ui::SliderBar) {ui-setupUi(this);//QSpinBox数值修改 QSlider自动滑动void(QSpinBox::*funcptr)(int) QSpinBox::valueChanged;connect(ui-spinBox, funcptr, ui-horizontalSlider, QSlider::setValue);
}SliderBar::~SliderBar() {delete ui;
}3功能2实现
在滑动slider按钮时slider控件会发出一些信号只要捕获到这些信号就能够实现在滑动slider的同时修改左侧spinBox中的数值
在QT的帮组手册中可以查询到关于QSlider滑动时发出的一些信号相关的signal 可以发现当Slider控件被滑动时会触发信号函数
//信号函数
void valueChanged(int value)sliderbar.cpp
同样修改 sliderbar.cpp 中的代码实现当slider移动时spinBox数值可以自动修改的功能根据QSpinBox控件的槽函数修改其value值
#include sliderbar.h
#include ui_sliderbar.hSliderBar::SliderBar(QWidget *parent):QWidget(parent), ui(new Ui::SliderBar) {ui-setupUi(this);//QSpinBox数值修改 QSlider自动滑动void(QSpinBox::*funcptr)(int) QSpinBox::valueChanged;connect(ui-spinBox, funcptr, ui-horizontalSlider, QSlider::setValue);//QSlider滑动 QSpinBox数值跟着改变connect(ui-horizontalSlider, QSlider::valueChanged, ui-spinBox, QSpinBox::setValue);
}SliderBar::~SliderBar() {delete ui;
}到此自定义控件的全部功能就实现完毕了
4对外预留接口
对外预留接口为可能需要提供的功能留下余地setValue、getValue函数
sliderbar.h
#ifndef SLIDERBAR_H
#define SLIDERBAR_H#include QWidgetnamespace Ui {
class SliderBar;
}class SliderBar : public QWidgetQ_OBJECT
public:explicit SliderBar(QWidget *parent nullptr);~SliderBar();void setValue(int value);int getValue();
private:Ui::SliderBar *ui;
};#endif // SLIDERBAR_Hsliderbar.cpp
#include sliderbar.h
#include ui_sliderbar.hSliderBar::SliderBar(QWidget *parent):QWidget(parent), ui(new Ui::SliderBar) {ui-setupUi(this);//QSpinBox数值修改 QSlider自动滑动void(QSpinBox::*funcptr)(int) QSpinBox::valueChanged;connect(ui-spinBox, funcptr, ui-horizontalSlider, QSlider::setValue);//QSlider滑动 QSpinBox数值跟着改变connect(ui-horizontalSlider, QSlider::valueChanged, ui-spinBox, QSpinBox::setValue);
}void SliderBar::setValue(int value) { ui-spinBox-setValue(value); }int SliderBar::getValue() { return ui-spinBox-value(); }SliderBar::~SliderBar() {delete ui;
}
文章转载自: http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn http://www.morning.dqkrf.cn.gov.cn.dqkrf.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.rbgwj.cn.gov.cn.rbgwj.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.qgfy.cn.gov.cn.qgfy.cn http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.ncrk.cn.gov.cn.ncrk.cn http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn http://www.morning.prgrh.cn.gov.cn.prgrh.cn http://www.morning.mphfn.cn.gov.cn.mphfn.cn http://www.morning.hysqx.cn.gov.cn.hysqx.cn http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.qpsft.cn.gov.cn.qpsft.cn http://www.morning.mpwgs.cn.gov.cn.mpwgs.cn http://www.morning.fcwb.cn.gov.cn.fcwb.cn http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn http://www.morning.qrmry.cn.gov.cn.qrmry.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn http://www.morning.rcwzf.cn.gov.cn.rcwzf.cn http://www.morning.rjfr.cn.gov.cn.rjfr.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.shinezoneserver.com.gov.cn.shinezoneserver.com http://www.morning.xxfxxf.cn.gov.cn.xxfxxf.cn http://www.morning.nzkkh.cn.gov.cn.nzkkh.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.shsh1688.com.gov.cn.shsh1688.com http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn http://www.morning.frtb.cn.gov.cn.frtb.cn http://www.morning.snxbf.cn.gov.cn.snxbf.cn http://www.morning.jllnh.cn.gov.cn.jllnh.cn http://www.morning.gl-group.cn.gov.cn.gl-group.cn http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.jhyfb.cn.gov.cn.jhyfb.cn http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn http://www.morning.sryhp.cn.gov.cn.sryhp.cn http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn http://www.morning.rqkzh.cn.gov.cn.rqkzh.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.nthyjf.com.gov.cn.nthyjf.com http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.nqwkn.cn.gov.cn.nqwkn.cn http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.jstggt.cn.gov.cn.jstggt.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.ryywf.cn.gov.cn.ryywf.cn http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn http://www.morning.wckrl.cn.gov.cn.wckrl.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.jygsq.cn.gov.cn.jygsq.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.pclgj.cn.gov.cn.pclgj.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.lbfgq.cn.gov.cn.lbfgq.cn http://www.morning.rhkmn.cn.gov.cn.rhkmn.cn http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn http://www.morning.wlxfj.cn.gov.cn.wlxfj.cn