300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C++ Qt5学习笔记 -12-10(qlabel对齐方式 dateEdit显示日历 设置滚动条及其一

C++ Qt5学习笔记 -12-10(qlabel对齐方式 dateEdit显示日历 设置滚动条及其一

时间:2019-01-26 08:34:19

相关推荐

C++ Qt5学习笔记 -12-10(qlabel对齐方式 dateEdit显示日历 设置滚动条及其一

1、qlabel对齐方式:

ui->label->setWordWrap(true); //自动换行ui->label->setAlignment(Qt::AlignTop); //上对齐//ui->label->setAlignment(Qt::AlignBottom); //下对齐

2、dateEdit显示日历:

ui -> dateEdit->setDateTime(QDateTime::currentDateTime()); //初始日期为当前日期ui-> dateEdit->setCalendarPopup(true); //显示日历

3、设置滚动条及其一些属性:

QScrollArea *m_pScroll = new QScrollArea(ui->widget); //指定父空间,即放在哪个控件里m_pScroll->setWidget(ui->widget_2);//指定作用域

隐藏横向的滑动条:

m_ScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

相关设置:

ScrollBarAsNeeded //需要的时候才显示ScrollBarAlwaysOff //关闭ScrollBarAlwaysOn //打开

4、qss中使用参数和三目运算符:

pNameLabel->setStyleSheet(QString("color: %1;").arg(is_VIP? "rgb(240, 30, 40)" : "black"));

使用两个以上的参数时候,就接着往后写,如:

//注:1% 和 2%这些最好写在标点符号后面,把qss截断了填参会失效ui->to_page_1->setStyleSheet(QString("QToolButton#to_page_1{border:0px; background-color: %1; color: %2;}").arg((i==1)? "rgb(240,240,240)":"rgb(1,93,180)").arg((i==1)? "rgb(1,93,180)":"white"));

也可以一段一段append上去:

QString qss = "";qss.append(ChString("QToolButton#to_page_1{border:0px; background-color: %1;").arg("rgb(240,240,240)"));qss.append(ChString("color: %2;}").arg("rgb(240,240,240)");

5、QToolBox标签按钮qss:

标签按钮在QToolBox中的类名为tab

ui->link_people->setStyleSheet("QToolBox#link_people{background-color:rgb(255,255,255,80%);}""QToolBox#link_people::tab{border:0px;}");

6、QToolBox的使用,及以此实现简易的QQ好友列表:

功能代码参考了大佬的代码,由于我是直接在ui中直接设置的QToolBox,所以作了比较大的修改而来:/invisible2/p/6843135.html

mainwindow.h中添加代码:

//头文件#include <QLabel>#include <QHBoxLayout>#include <QScrollArea>//参数public://结构体struct User {bool bVIP; // 会员QString strName; // 名字QString strIcon; // 图像QString strDesc; // 个人说明}//结构体数组user[3][5] ={{{true, u8"喜羊羊", ":/new/prefix1/source/1.jpg", u8"我是喜羊羊"},{true, u8"美羊羊", ":/new/prefix1/source/2.jpg", u8"我是美羊羊"},{true, u8"懒羊羊", ":/new/prefix1/source/3.jpg", u8"我是懒羊羊"},{false, u8"沸羊羊", ":/new/prefix1/source/4.jpg", u8"我是沸羊羊"},{false, u8"慢羊羊", ":/new/prefix1/source/5.jpg", u8"我是慢羊羊"}},{{true,u8"灰太狼", ":/new/prefix1/source/6.jpg", u8"我是灰太狼"},{true,u8"红太狼", ":/new/prefix1/source/16.jpg", u8"我是红太狼"},{true,u8"夜太狼", ":/new/prefix1/source/8.jpg", u8"我是夜太狼"},{false,u8"蕉太狼", ":/new/prefix1/source/9.jpg", u8"我是蕉太狼"},{false,u8"小灰灰", ":/new/prefix1/source/10.jpg", u8"我是小灰灰"}},{{true, u8"潇洒哥", ":/new/prefix1/source/11.jpg", u8"我是潇洒哥"},{true, u8"黑大帅", ":/new/prefix1/source/12.jpg", u8"我是黑大帅"},{false,u8"包包大人", ":/new/prefix1/source/13.jpg", u8"我是包包大人"},{false,u8"蛋蛋", ":/new/prefix1/source/14.jpg", u8"我是蛋蛋"},{false,u8"泰哥", ":/new/prefix1/source/15.jpg", u8"我是泰哥"}}};//QToolBox单元控件//相当于1个好友单元,水平布局QWidget* initWidget(bool bVIP, const QString &name,const QString &icon, const QString &desc = "") {QWidget *pWidget = new QWidget(this);QLabel *pPixmapLabel = new QLabel(this); //头像QLabel *pNameLabel = new QLabel(this);//名字QLabel *pDescLabel = new QLabel(this); //个性签名// 图像 名称 描述pPixmapLabel->setPixmap(QPixmap(icon));pNameLabel->setText(name);pDescLabel->setText(desc);//vip颜色pNameLabel->setStyleSheet(QString("color: %1;").arg(bVIP ? "rgb(240, 30, 40)" : "black"));pDescLabel->setStyleSheet("color: gray;");//水平布局QHBoxLayout *HBoxLayout1 = new QHBoxLayout();HBoxLayout1->addWidget(pPixmapLabel);HBoxLayout1->addWidget(pNameLabel);HBoxLayout1->addWidget(pDescLabel);HBoxLayout1->addStretch();HBoxLayout1->setContentsMargins(0, 0, 0, 0);pWidget->setLayout(HBoxLayout1);return pWidget;}

ui中放置QToolBoxOBJECT名以link_people为例,父控件为:ui->friends,在mainwindow.cpp中:

//添加滚动条QScrollArea *m_ScrollArea = new QScrollArea(ui->friends);m_ScrollArea->setWidget(ui->link_people);m_ScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);m_ScrollArea->resize(290,315);m_ScrollArea->setStyleSheet("border:0px;"); //去掉边框//设置QToolBox属性,背景颜色白色且设置标签按钮边框粗细为0ui->link_people->setStyleSheet("QToolBox#link_people{background-color:rgb(255,255,255,80%);}""QToolBox#link_people::tab{border:0px;}");//设置QToolBox的标签ui->link_people->setItemText(0,u8"🐏 羊村 5/5");ui->link_people->setItemText(1,u8"🐺 狼堡 5/5");ui->link_people->setItemText(2,u8"🐘 森林 5/5");//设置标签的图标ui->link_people->setCurrentIndex(0);QIcon ico_link_people(":/new/prefix1/source/to_right.png");ui->link_people->setItemIcon(0,ico_link_people);ui->link_people->setItemIcon(1,ico_link_people);ui->link_people->setItemIcon(2,ico_link_people);//垂直布局QVBoxLayout *pLayout = new QVBoxLayout(ui->tool_page_1);QVBoxLayout *pLayout2 = new QVBoxLayout(ui->tool_page_2);QVBoxLayout *pLayout3 = new QVBoxLayout(ui->tool_page_3);//在垂直布局中添加好友for (int j = 0; j < sizeof(user[0])/sizeof(user[0][0]); ++j) //分组下朋友个数{QWidget *pWidget = initWidget(user[0][j].bVIP, user[0][j].strName,user[0][j].strIcon, user[0][j].strDesc); //每有一个朋友就初始化一个qwidget来显示朋友,控件包含图标、昵称和签名QWidget *pWidget2 = initWidget(user[1][j].bVIP, user[1][j].strName,user[1][j].strIcon, user[1][j].strDesc); QWidget *pWidget3 = initWidget(user[2][j].bVIP, user[2][j].strName,user[2][j].strIcon, user[2][j].strDesc); //将垂直布局添加到QToolBox的分页中 pLayout->addWidget(pWidget);pLayout2->addWidget(pWidget2);pLayout3->addWidget(pWidget3);}pLayout->addStretch(); //在button按钮间增加伸缩量pLayout2->addStretch();pLayout3->addStretch();pLayout->setSpacing(10);//插入间距10pLayout2->setSpacing(10);pLayout3->setSpacing(10);pLayout->setContentsMargins(10, 10, 10, 10); //左、上、右、下边距pLayout2->setContentsMargins(10, 10, 10, 10);pLayout3->setContentsMargins(10, 10, 10, 10);

(注:由于动态生成,所以无法单独控制某一个,想单独控制某一个好友的属性要么在里面写控制,要么用容器把这些控件都存起来,要么一个一个写吧)

再加个标签左边的标签切换,小三角变换:

//头文件中:void index_changed(int);//cpp中://绑定切换标签按钮时功能connect(ui->link_people,SIGNAL(currentChanged(int)),this,SLOT(index_changed(int)));//小三角变换,QToolBox切页void qqchat_main_window::index_changed(int index){QIcon ico_link_people(":/new/prefix1/source/to_right.png");QIcon ico_link_people2(":/new/prefix1/source/to_down.png");ui->link_people->setItemIcon(0,ico_link_people);ui->link_people->setItemIcon(1,ico_link_people);ui->link_people->setItemIcon(2,ico_link_people);ui->link_people->setItemIcon(index,ico_link_people2);}

看一下结果:

C++ Qt5学习笔记 -12-10(qlabel对齐方式 dateEdit显示日历 设置滚动条及其一些属性 qss中使用参数 QToolBox的使用 及以此实现简易的QQ好友列表)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。