http://blog.chinaunix.net/uid-20622737-id-3181143.html

1> 定时器的使用

QTimer  *timer  =   new   QTimer( this); 
connect(timer,   SIGNAL(timeout()),   this,   SLOT(update())); // 设置定时器回调函数 
timer->start( 1000); // 启动定时器

2> 得到系统当前时间

QTime  time  =   QTime::currentTime(); 
time.hour(); 
time.minute();
time.second(); 
time.msec();

3> 窗口 widget 相关


setWindowTitle(tr( "My Title "));  // 设置窗口标题 
resize( 200,   200);   // 设置窗口大小
width(); // 窗口宽度
height(); // 窗口高度

4> 窗口(widget) 事件回调相关 (具体参考 widget.h 文件)

#ifndef   QT_NO_WHEELEVENT  
virtual   void   wheelEvent( QWheelEvent  *);
#endif 
virtual   void   keyPressEvent( QKeyEvent  *);  
virtual   void   keyReleaseEvent( QKeyEvent  *);  
virtual   void   focusInEvent( QFocusEvent  *);  
virtual   void   focusOutEvent( QFocusEvent  *);  
virtual   void   paintEvent( QPaintEvent  *); // 每次刷新屏幕都会回调此函数  
virtual   void   actionEvent( QActionEvent  *); 

5> QT 画布(QPainter)的使用

  1. QColor hourColor(127, 0, 127); // 画笔颜色
  2. QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
  3. // 设置画布的样式
  4. painter.setPen(Qt::NoPen);
  5. painter.setBrush(hourColor);
  6. painter.translate(width() / 2, height() / 2); // 画布坐标系统的移动(当前窗口的中心点位置)
  7. painter.scale(side / 200.0, side / 200.0);    // 设置缩放
  8. painter.rotate(30.0);    // 坐标系统,旋转 30 度
  9. painter.save();
  10. painter.drawLine(92, 0, 96, 0);
  1. // 常用函数(参考QPainter.h)
  2. void drawText()
  3. void fillRect()
  4. void drawPoint()
  5. void drawPoints(const QPoint *points, int pointCount);
  6. void drawLine(int x1, int y1, int x2, int y2);
  7. void drawLines(const QLineF *lines, int lineCount);
  8. void drawRect(int x1, int y1, int w, int h);
  9. void drawRects(const QRectF *rects, int rectCount);
  10. void drawEllipse(int x, int y, int w, int h);
  11. void drawPolyline(const QPointF *points, int pointCount);
  12. void drawText(const QPointF &p, const QString &s);
  13. void drawImage() // 可以绘制图片
  14. void eraseRect()
  15. void scale(qreal sx, qreal sy); // 设置缩放
  16. void rotate(qreal a);// 设置旋转
  17. void setBackground(const QBrush &bg); // 设置背景颜色
  18. void setPen(const QColor &color); // 设置画笔
  1. // 画一个路径( QPainterPath 可以存储 painter 的路径信息)
  2. QPainterPath clock;   // 初始化一个钟表的形状
  3. clock.addEllipse(-50.0, -50.0, 100.0, 100.0);
  4. clock.addEllipse(-48.0, -48.0, 96.0, 96.0);
  5. clock.moveTo(0.0, 0.0);
  6. clock.lineTo(-2.0, -2.0);
  7. clock.lineTo(0.0, -42.0);
  8. clock.lineTo(2.0, -2.0);
  9. clock.lineTo(0.0, 0.0);
  10. clock.moveTo(0.0, 0.0);
  11. clock.lineTo(2.732, -0.732);
  12. clock.lineTo(24.495, 14.142);
  13. clock.lineTo(0.732, 2.732);
  14. clock.lineTo(0.0, 0.0);
  15. QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
  16. painter.fillPath(clock, Qt::blue);
  1. // 绘制一个文本
  2. QPainterPath text;
  3. QFont font;
  4. font.setPixelSize(50);
  5. QRect fontBoundingRect = QFontMetrics(font).boundingRect(tr("Qt"));
  6. text.addText(-QPointF(fontBoundingRect.center()), font, tr("Qt"));
  7. QPainter painter(objWidget); // 创建一个画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象
  8. painter.fillPath(text, Qt::blue);        // 绘制一个文本
  painter. drawText (100,100, tr("Hello!!!"));     // 一句话也可以搞定

6>  Layout 的使用举例
  1. QGridLayout *mainLayout = new QGridLayout;
  2. // 2行 3列的一个网格布局
  3. for (int i = 0; i < 2; ++i) { // 行
  4. for (int j = 0; j < 3; ++j) { // 列
  5. glWidgets[i][j] = new GLWidget(0, 0);
  6. mainLayout->addWidget(glWidgets[i][j], i, j); // 直接将其他窗口对象,添加到 mainLayout 中就可以
  7. }
  8. }
  9. setLayout(mainLayout); // 调用窗口对象的 setLayout 方法来设置布局

7> QT 控件的使用 总结

  1. QComboBox 下拉选择控件
  2. shapeComboBox = new QComboBox;
  3. shapeComboBox->addItem(tr("Clock"));
  4. shapeComboBox->addItem(tr("House"));
  5. shapeComboBox->addItem(tr("Text"));
  6. shapeComboBox->addItem(tr("Truck"));
  7. // 置回调函数 operationChanged
  8. connect(shapeComboBox, SIGNAL(activated(int)), this, SLOT(shapeSelected(int)));
  9. // 回到函数中, index 为当前选择的索引
  10. void Window::shapeSelected(int index)
  11. {
  12. }
  13. int index = shapeComboBox->currentIndex(); // 可以得到当前选择的索引
  1. // Table View 的使用
  2. QStandardItemModel model(4, 2);     // 设置表格的数据模型 ( 4 行 2 列)
  3. QTableView tableView;             // 表格对象
  4. tableView.setModel(&model); // 设置数据模型
  5. // 设置表格对象的数据显示
  6. for (int row = 0; row < 10; ++row)
  7. {
  8. for (int column = 0; column < 5; ++column)
  9. {
  10. QModelIndex index = model.index(row, column, QModelIndex()); // 得到某一个具体的数据索引
  11. model.setData(index, QVariant("aaaa"));                    // 设置数据
  12. }
  13. }
表格数据的操作:
  1. model.setColumnCount(5);     // 设置表格的列数
  2. model.setRowCount(2);         // 设置表格的行数
  3. model.insertColumn(1);         // 在第 1列后面,插入一列
  4. model.insertRow(1);         // 在第 1 行后面,插入一列
  5. model.rowCount();         // 表格行数
  6. model.columnCount();         // 表格列数

截图:


菜单相关

  1. // MainWindow 为主窗口的对象指针
  2. // Action初始化 -- 一个 Action 相当于 一个具体的菜单项
  3. actionShow_Test_Dialog = new QAction(MainWindow);
  4. actionShow_Test_Dialog->setObjectName(QString::fromUtf8("actionShow_Test_Dialog"));
  5. actionOpen = new QAction(MainWindow);
  6. actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
  7. actionSave = new QAction(MainWindow);
  8. actionSave->setObjectName(QString::fromUtf8("actionSave"));
  9. actionShow_Table = new QAction(MainWindow);
  10. actionShow_Table->setObjectName(QString::fromUtf8("actionShow_Table"));
  11. // QMenuBar 菜单栏, 上面可以放很多的 QMenu
  12. menuBar = new QMenuBar(MainWindow);
  13. menuBar->setObjectName(QString::fromUtf8("menuBar"));
  14. menuBar->setGeometry(QRect(0, 0, 400, 22));
  15. // QMenu 菜单, 一个菜单上,可以放很多的 Action
  16. menuFile = new QMenu(menuBar);
  17. menuFile->setObjectName(QString::fromUtf8("menuFile"));
  18. menuTest = new QMenu(menuBar);
  19. menuTest->setObjectName(QString::fromUtf8("menuTest"));
  20. MainWindow->setMenuBar(menuBar);
  21. menuBar->addAction(menuFile->menuAction());
  22. menuBar->addAction(menuTest->menuAction());
  23. menuFile->addAction(actionOpen);
  24. menuFile->addAction(actionSave);
  25. menuTest->addAction(actionShow_Test_Dialog);
  26. menuTest->addAction(actionShow_Table);
  27. //  设置菜单项的具体回调函数
QObject::connect( actionShow_Test_Dialog,   SIGNAL(triggered()),  MainWindow,   SLOT(ShowTestDialog())); 
QObject::connect( actionShow_Table,   SIGNAL(triggered()),  MainWindow,   SLOT(ShowTable()));

菜单层次关系截图如下:

阅读(4979) | 评论(2) | 转发(7) |

0

上一篇:QRgb 代码学习

下一篇:Xcode 4的Build目录位置 (转载)

QT知识点总结(强)相关推荐

  1. Qt知识点汇总——来自网络

    为什么80%的码农都做不了架构师?>>>    1.程序可以显示中文 #include <QTextCodec> QTextCodec::setCodecForTr(QT ...

  2. Qt知识点、疑难杂症的治疗

    Q: QVariant 保存指针数据 A1: 1,使用QVariant::fromValue((void*)target)保存数据 2,使用(ShortcutItem*)(v.value<voi ...

  3. Qt知识点梳理 —— 静态函数发送信号

    文章目录 应用场景 思路原理 项目案例 项目源码 开发环境 应用场景 在编写相机程序时,使用了相机的回调函数,此回调函数为静态成员函数,在需要发送的信号时发现静态成员函数直接发送信号会有问题: 非静态 ...

  4. Qt知识点梳理 —— 国际化 QtLinguist 应用(1)

    文章目录 新建项目 绘制界面 创建翻译文件 翻译文件 新建项目 新建项目的时候,在Translation这一步需要选语言,本例以中英文为例,此处选择Chinese: 此时项目创建完成后,程序目录下会多 ...

  5. Qt知识点梳理 —— 国际化 QtLinguist 应用(2)

    文章目录 QSettings使用 多语言设置 运行效果 项目源码 开发环境 在 国际化 QtLinguist 应用(1) 中,已经生成了源语言和目的语言文件,这章来讲如何在程序中应用: QSettin ...

  6. 【精华】详解Qt中的内存管理机制

    前言 内存管理,是对软件中内存资源的分配与释放进行有效管理的方法和理论. 众所周知,内存管理是软件开发的一个重要的内容.软件规模越大,内存管理可能出现的问题越多.如果像C语言一样手动地管理内存,一会给 ...

  7. C++中运行一个程序的内存分配情况及qt中的内存管理机制

    一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...

  8. CodeForces - 1547G How Many Paths?(强联通缩点+拓扑)

    题目链接:点击查看 题目大意:给出一张有向图,无重边,有环,现在需要判断每个点和点 111 的关系: 000:点 111 无法到达点 uuu 111:点 111 到点 uuu 有且仅有一条路径 222 ...

  9. 前端基础知识点-每天一个基本知识点(100+个前端小知识,你是否都知道?)

    文章目录 前言 第一回合 一.知识点:cookie(21/09/06) 二.知识点:节流和防抖(21/09/07) 三.知识点:var和let以及const(21/09/08) 四:知识点:深拷贝和浅 ...

最新文章

  1. 想让好友不停地擦手机屏幕?微信头像这样设置就行了!
  2. 小程序 获取用户信息
  3. Mybatis-自定义类型处理器
  4. 校招刷题---java选择题笔记05
  5. web开发人员必备的提高开发水平的20个参考手册
  6. 从零开始学Vue(一)—— Vue.js 入门
  7. php 点击刷新验证码,thinkphp3.2点击刷新生成验证码
  8. 计算机硬盘使用寿命,一块机械硬盘的寿命能超过十年吗?
  9. 恒指赵鑫:来说说止损
  10. 程序猿头头(async与await的原理)
  11. 阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout
  12. android OS 耗电量大,安卓os耗电高怎么解决
  13. 今日头条——面试案例
  14. 重置form表单中的input值
  15. python枪械_Python的七种武器
  16. 常见的传输介质的种类和性能,你知道嘛?
  17. Python编程练习题目汇总
  18. 闲着没事,自己做贪吃蛇耍耍?
  19. 中兴ACS服务器软件,AAA基本配置:终于成功完成了真实的ACS4.1与模拟PIX软件的交互 实验成功...
  20. 万魔手游豆 1MORE × omthing AirFree Buds

热门文章

  1. IDEA2022配置Tomcat
  2. 再见Win7----记录Win7系统的安装
  3. NLP 迷思之四:词义消歧(WSD)是NLP应用的瓶颈
  4. 黑盒圆桌派 | 品牌怎样破除流量内卷?
  5. Kettle基础操作
  6. [开发工具] 史上最全系列之开发环境搭建之DDMS
  7. java开发环境搭建与配置
  8. Error setting driver on UnpooledDataSource
  9. 如何在SensorIMX178 中加入720p120fps
  10. 弘辽科技:怎么在淘宝上开公益店铺?怎么设置公益宝贝?