QT知识点总结(强)
http://blog.chinaunix.net/uid-20622737-id-3181143.html
QTimer *timer = new QTimer( this);
2> 得到系统当前时间
QTime time = QTime::currentTime();
3> 窗口 widget 相关
setWindowTitle(tr( "My Title ")); // 设置窗口标题
width(); // 窗口宽度
4> 窗口(widget) 事件回调相关 (具体参考 widget.h 文件)
5> QT 画布(QPainter)的使用
- QColor hourColor(127, 0, 127); // 画笔颜色
- QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
- // 设置画布的样式
- painter.setPen(Qt::NoPen);
- painter.setBrush(hourColor);
- painter.translate(width() / 2, height() / 2); // 画布坐标系统的移动(当前窗口的中心点位置)
- painter.scale(side / 200.0, side / 200.0); // 设置缩放
- painter.rotate(30.0); // 坐标系统,旋转 30 度
- painter.save();
- painter.drawLine(92, 0, 96, 0);
- // 常用函数(参考QPainter.h)
- void drawText()
- void fillRect()
- void drawPoint()
- void drawPoints(const QPoint *points, int pointCount);
- void drawLine(int x1, int y1, int x2, int y2);
- void drawLines(const QLineF *lines, int lineCount);
- void drawRect(int x1, int y1, int w, int h);
- void drawRects(const QRectF *rects, int rectCount);
- void drawEllipse(int x, int y, int w, int h);
- void drawPolyline(const QPointF *points, int pointCount);
- void drawText(const QPointF &p, const QString &s);
- void drawImage() // 可以绘制图片
- void eraseRect()
- void scale(qreal sx, qreal sy); // 设置缩放
- void rotate(qreal a);// 设置旋转
- void setBackground(const QBrush &bg); // 设置背景颜色
- void setPen(const QColor &color); // 设置画笔
- // 画一个路径( QPainterPath 可以存储 painter 的路径信息)
- QPainterPath clock; // 初始化一个钟表的形状
- clock.addEllipse(-50.0, -50.0, 100.0, 100.0);
- clock.addEllipse(-48.0, -48.0, 96.0, 96.0);
- clock.moveTo(0.0, 0.0);
- clock.lineTo(-2.0, -2.0);
- clock.lineTo(0.0, -42.0);
- clock.lineTo(2.0, -2.0);
- clock.lineTo(0.0, 0.0);
- clock.moveTo(0.0, 0.0);
- clock.lineTo(2.732, -0.732);
- clock.lineTo(24.495, 14.142);
- clock.lineTo(0.732, 2.732);
- clock.lineTo(0.0, 0.0);
- QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
- painter.fillPath(clock, Qt::blue);
- // 绘制一个文本
- QPainterPath text;
- QFont font;
- font.setPixelSize(50);
- QRect fontBoundingRect = QFontMetrics(font).boundingRect(tr("Qt"));
- text.addText(-QPointF(fontBoundingRect.center()), font, tr("Qt"));
- QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
- painter.fillPath(text, Qt::blue); // 绘制一个文本
- QGridLayout *mainLayout = new QGridLayout;
- // 2行 3列的一个网格布局
- for (int i = 0; i < 2; ++i) { // 行
- for (int j = 0; j < 3; ++j) { // 列
- glWidgets[i][j] = new GLWidget(0, 0);
- mainLayout->addWidget(glWidgets[i][j], i, j); // 直接将其他窗口对象,添加到 mainLayout 中就可以
- }
- }
- setLayout(mainLayout); // 调用窗口对象的 setLayout 方法来设置布局
7> QT 控件的使用 总结
- QComboBox 下拉选择控件
- shapeComboBox = new QComboBox;
- shapeComboBox->addItem(tr("Clock"));
- shapeComboBox->addItem(tr("House"));
- shapeComboBox->addItem(tr("Text"));
- shapeComboBox->addItem(tr("Truck"));
- // 置回调函数 operationChanged
- connect(shapeComboBox, SIGNAL(activated(int)), this, SLOT(shapeSelected(int)));
- // 回到函数中, index 为当前选择的索引
- void Window::shapeSelected(int index)
- {
- }
- int index = shapeComboBox->currentIndex(); // 可以得到当前选择的索引
- // Table View 的使用
- QStandardItemModel model(4, 2); // 设置表格的数据模型 ( 4 行 2 列)
- QTableView tableView; // 表格对象
- tableView.setModel(&model); // 设置数据模型
- // 设置表格对象的数据显示
- for (int row = 0; row < 10; ++row)
- {
- for (int column = 0; column < 5; ++column)
- {
- QModelIndex index = model.index(row, column, QModelIndex()); // 得到某一个具体的数据索引
- model.setData(index, QVariant("aaaa")); // 设置数据
- }
- }
- model.setColumnCount(5); // 设置表格的列数
- model.setRowCount(2); // 设置表格的行数
- model.insertColumn(1); // 在第 1列后面,插入一列
- model.insertRow(1); // 在第 1 行后面,插入一列
- model.rowCount(); // 表格行数
- model.columnCount(); // 表格列数
截图:
菜单相关
- // MainWindow 为主窗口的对象指针
- // Action初始化 -- 一个 Action 相当于 一个具体的菜单项
- actionShow_Test_Dialog = new QAction(MainWindow);
- actionShow_Test_Dialog->setObjectName(QString::fromUtf8("actionShow_Test_Dialog"));
- actionOpen = new QAction(MainWindow);
- actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
- actionSave = new QAction(MainWindow);
- actionSave->setObjectName(QString::fromUtf8("actionSave"));
- actionShow_Table = new QAction(MainWindow);
- actionShow_Table->setObjectName(QString::fromUtf8("actionShow_Table"));
- // QMenuBar 菜单栏, 上面可以放很多的 QMenu
- menuBar = new QMenuBar(MainWindow);
- menuBar->setObjectName(QString::fromUtf8("menuBar"));
- menuBar->setGeometry(QRect(0, 0, 400, 22));
- // QMenu 菜单, 一个菜单上,可以放很多的 Action
- menuFile = new QMenu(menuBar);
- menuFile->setObjectName(QString::fromUtf8("menuFile"));
- menuTest = new QMenu(menuBar);
- menuTest->setObjectName(QString::fromUtf8("menuTest"));
- MainWindow->setMenuBar(menuBar);
- menuBar->addAction(menuFile->menuAction());
- menuBar->addAction(menuTest->menuAction());
- menuFile->addAction(actionOpen);
- menuFile->addAction(actionSave);
- menuTest->addAction(actionShow_Test_Dialog);
- menuTest->addAction(actionShow_Table);
- // 设置菜单项的具体回调函数
菜单层次关系截图如下:
阅读(4979) | 评论(2) | 转发(7) |
上一篇:QRgb 代码学习
下一篇:Xcode 4的Build目录位置 (转载)
QT知识点总结(强)相关推荐
- Qt知识点汇总——来自网络
为什么80%的码农都做不了架构师?>>> 1.程序可以显示中文 #include <QTextCodec> QTextCodec::setCodecForTr(QT ...
- Qt知识点、疑难杂症的治疗
Q: QVariant 保存指针数据 A1: 1,使用QVariant::fromValue((void*)target)保存数据 2,使用(ShortcutItem*)(v.value<voi ...
- Qt知识点梳理 —— 静态函数发送信号
文章目录 应用场景 思路原理 项目案例 项目源码 开发环境 应用场景 在编写相机程序时,使用了相机的回调函数,此回调函数为静态成员函数,在需要发送的信号时发现静态成员函数直接发送信号会有问题: 非静态 ...
- Qt知识点梳理 —— 国际化 QtLinguist 应用(1)
文章目录 新建项目 绘制界面 创建翻译文件 翻译文件 新建项目 新建项目的时候,在Translation这一步需要选语言,本例以中英文为例,此处选择Chinese: 此时项目创建完成后,程序目录下会多 ...
- Qt知识点梳理 —— 国际化 QtLinguist 应用(2)
文章目录 QSettings使用 多语言设置 运行效果 项目源码 开发环境 在 国际化 QtLinguist 应用(1) 中,已经生成了源语言和目的语言文件,这章来讲如何在程序中应用: QSettin ...
- 【精华】详解Qt中的内存管理机制
前言 内存管理,是对软件中内存资源的分配与释放进行有效管理的方法和理论. 众所周知,内存管理是软件开发的一个重要的内容.软件规模越大,内存管理可能出现的问题越多.如果像C语言一样手动地管理内存,一会给 ...
- C++中运行一个程序的内存分配情况及qt中的内存管理机制
一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...
- CodeForces - 1547G How Many Paths?(强联通缩点+拓扑)
题目链接:点击查看 题目大意:给出一张有向图,无重边,有环,现在需要判断每个点和点 111 的关系: 000:点 111 无法到达点 uuu 111:点 111 到点 uuu 有且仅有一条路径 222 ...
- 前端基础知识点-每天一个基本知识点(100+个前端小知识,你是否都知道?)
文章目录 前言 第一回合 一.知识点:cookie(21/09/06) 二.知识点:节流和防抖(21/09/07) 三.知识点:var和let以及const(21/09/08) 四:知识点:深拷贝和浅 ...
最新文章
- 想让好友不停地擦手机屏幕?微信头像这样设置就行了!
- 小程序 获取用户信息
- Mybatis-自定义类型处理器
- 校招刷题---java选择题笔记05
- web开发人员必备的提高开发水平的20个参考手册
- 从零开始学Vue(一)—— Vue.js 入门
- php 点击刷新验证码,thinkphp3.2点击刷新生成验证码
- 计算机硬盘使用寿命,一块机械硬盘的寿命能超过十年吗?
- 恒指赵鑫:来说说止损
- 程序猿头头(async与await的原理)
- 阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout
- android OS 耗电量大,安卓os耗电高怎么解决
- 今日头条——面试案例
- 重置form表单中的input值
- python枪械_Python的七种武器
- 常见的传输介质的种类和性能,你知道嘛?
- Python编程练习题目汇总
- 闲着没事,自己做贪吃蛇耍耍?
- 中兴ACS服务器软件,AAA基本配置:终于成功完成了真实的ACS4.1与模拟PIX软件的交互 实验成功...
- 万魔手游豆 1MORE × omthing AirFree Buds