Qt 小例子学习14 - 动态滚动QScrollArea
Qt 小例子学习14 - 动态滚动QScrollArea
#include "HorizontalScrollArea.h"#include <QApplication>
#include <QDebug>
#include <QLabel>
#include <QPushButton>
#include <QScrollArea>
#include <QScrollBar>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;w.setLayout(new QVBoxLayout);QPushButton btn("Add", &w);int nrows = 2;int ncols = 2;HorizontalScrollArea scroll(nrows, ncols);w.layout()->addWidget(&btn);w.layout()->addWidget(&scroll);QObject::connect(&btn, &QPushButton::clicked, [&scroll, &nrows](){int column = scroll.columnCount();for (int row = 0; row < nrows; row++){QLabel *label = new QLabel(QString("label: %1 %2").arg(row).arg(column));label->setFrameShape(QFrame::Box);label->setAlignment(Qt::AlignCenter);QColor color(qrand() % 256, qrand() % 256, qrand() % 256);label->setStyleSheet(QString("QLabel { background-color : %1;}").arg(color.name()));scroll.addWidget(label, row, column);}});w.show();return a.exec();
}
HorizontalScrollArea.h
#ifndef HORIZONTALSCROLLAREA_H
#define HORIZONTALSCROLLAREA_H#include <QGridLayout>
#include <QResizeEvent>
#include <QScrollArea>
#include <QScrollBar>#include <QDebug>class HorizontalScrollArea : public QScrollArea
{QWidget *contentWidget;QGridLayout *grid;int nRows;int nColumns;public:HorizontalScrollArea(int rows, int cols, QWidget *parent = Q_NULLPTR): QScrollArea(parent), nRows(rows), nColumns(cols){setWidgetResizable(true);contentWidget = new QWidget(this);setWidget(contentWidget);grid = new QGridLayout(contentWidget);setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);}void addWidget(QWidget *w, int row, int col){grid->addWidget(w, row, col);adaptSize();}int columnCount() const{if (grid->count() == 0){return 0;}return grid->columnCount();}private:void adaptSize(){if (columnCount() >= nColumns){int w = 1.0 * (width() - grid->horizontalSpacing() * (nColumns + 1.6)) /nColumns;int wCorrected =w * columnCount() + grid->horizontalSpacing() * (columnCount() + 2);contentWidget->setFixedWidth(wCorrected);}contentWidget->setFixedHeight(viewport()->height());}protected:void resizeEvent(QResizeEvent *event){QScrollArea::resizeEvent(event);adaptSize();}
};#endif // HORIZONTALSCROLLAREA_H
Qt 小例子学习14 - 动态滚动QScrollArea相关推荐
- Qt小例子学习52 - 卡片游戏
Qt小例子学习52 - 卡片游戏 Card.qml import QtQuick 2.0 import QtQuick.Layouts 1.3Item {id: cardLayout.fillWidt ...
- Qt 小例子学习33 - QTableWidget 显示点击的行列
Qt 小例子学习33 - QTableWidget 显示点击的行列 #include <QApplication> #include <QDebug> #include < ...
- Qt 小例子学习26 - 画网格
Qt 小例子学习26 - 画网格 GraphicsScene.h #ifndef GRAPHICSSCENE_H #define GRAPHICSSCENE_H#include <QGraphi ...
- Qt 小例子学习44 - 磁贴界面
Qt 小例子学习44 - 磁贴界面 FormModel.h #ifndef FORMMODEL_H #define FORMMODEL_H#include <QAbstractListModel ...
- Qt 小例子学习8 - 选择器
Qt 小例子学习7 - 选择器 dialog.cpp #include "dialog.h" #include "ui_dialog.h"#include &l ...
- QT小例子GUI(主)线程与子线程之间的通信
QT小例子GUI(主)线程与子线程之间的通信 在主线程上,可以控制子线程启动,停止,清零 如果子线程启动的话,每一秒钟会向主线程发送一个数字,让主线程更新界面上的数字. #ifndef TQT_H_ ...
- 关于MSSQL存储过程中使用游标的一个小例子(学习)
声明:本例转自http://hi.chinaunix.net/?214950/viewspace-1713,主要是为了学习之用 比如有个表,内容如下 id,text 1,春花秋月何时了 2,往事知多少 ...
- 小例子学习C#扩展方法
扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 ...
- QT小例子 ---文件查找
先看看效果图吧,可以查找文件,以及通过文件内容进行查找 #ifndef WINDOW_H #define WINDOW_H#include <QDialog> #include <Q ...
- 基于Qt5.14.2和mingw的Qt源码学习(三) — 元对象系统简介及moc工具是如何保存类属性和方法的
基于Qt5.14.2和mingw的Qt源码学习(三) - 元对象系统简介及moc工具是如何保存类属性和方法的 一.什么是元对象系统 1.元对象系统目的 2.实现元对象系统的关键 3.元对象系统的其他一 ...
最新文章
- 链表类型题目需要用到的头文件list.h
- cassandra本地连接失败_本地网络发现失败的解决方法连接到OS X中的服务器的问题 | MOS86...
- mysqldump 和 sql命令导入sql文件
- apache+tomcat的架构
- CF1444C Team-Building(可持久化并查集)(二分图)
- MongoDB文件操作(支持大于4M数据)
- c 子类对象 访问父类对象受保护成员_java面向对象总结
- Python基础__Python序列基本类型及其操作(1)
- ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址
- 面试稳了!网易资深工程师详解运维面经!
- 解析RocketMQ的消息索引文件consumequeue
- TCP/IP参考模型入门
- mysql 游标插入数据_mysql游标插入问题
- lzg_ad:EWF RAM Reg模式原理介绍
- 微信小程序-基于云开发 CMS + Vant Weapp 电商 Demo 来了!
- Javascript上传图片转base64并预览
- 酷狗音乐分类html,酷狗音乐手机版创建歌单教程 分类自己的音乐库
- Android去除对话框边距,去除TextView默认内边距
- trivial/nontrival函数
- 不能整除7的整数C语言,求1-1000中能被3整除,且不能被7整除,且至少有一位数是5的整数...