
QT
PYB不开心
这个作者很懒,什么都没留下…
展开
-
QT错误.
利用Qt Creator 1.2.1( Built on Sep 30 2009 at 05:21:42)编译程序经常会出现error: collect2: ld returned 1 exit status的错误,但是自己的程序没有一点问题,怎么回事呢? 如果这时退出软件,再重新进入,打开刚才的工程,重新编译,就不会出现刚才的错误了。这应该是Qt Creator软件的问题吧!转载 2015-12-17 18:47:54 · 555 阅读 · 0 评论 -
Qt贪吃蛇游戏(2):
[0]:墙类的设计:墙分为2种,可以移动的和不会移动的墙.#ifndef WALL_H#define WALL_H#include "QGraphicsItem"class Wall : public QGraphicsItem{public: enum WallType { movewall,//会移动的墙 normalwall };原创 2016-02-06 23:00:25 · 1649 阅读 · 0 评论 -
Qt实战之贪吃蛇(1)
这是第一次用Qt写的有实际意义的小游戏,主要参考资料来自于Qt学习之路(2)和Qt文档,以及网上一些零碎的博客资料,还有很多可以优化的地方,以及一些小bug.[0]:开始界面的设置,为了方便起见,我使用了QtDesigner制作了开始界面,它设置了开始界面的几个按钮,以及按下之后会出现的东西,具体的实现主要是靠一个自己定义的Processcliked()槽函数,它响应所有按钮的点击,并且进行相应的处原创 2016-02-06 17:33:24 · 2997 阅读 · 1 评论 -
QT学习之路(6)构建文件对话框
我们利用标准对话框QFileDialog的一些static函数以及QTextEdit控件来构造一个文件对话框.功能有打开一个txt文件并且可以在编辑框上编辑,可以选择另存为或者直接保存.具体的API细节需要看文档.[1]由于另存为和保存的功能非常相似,所以我们尽可能复用代码,在此我采取的是用saveas加上一个默认参数,当我们需要save的时候就直接传入当前打开的文件地址,需要saveas的时候就重原创 2015-12-22 19:55:32 · 705 阅读 · 0 评论 -
Qt(11):QT的绘制系统
[0]:paintter类可以类比为画笔,paintDevice类作为绘制的地点(Qwidiget,QImage都是子类).[1]:自己定义一个窗口类#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;}class Painttest : public QWidget{ Q_OBJE原创 2016-01-26 20:58:41 · 444 阅读 · 0 评论 -
Qt(12):画笔,画刷,反走样以及渐变
画笔和画刷的设置:[0]:QBrush定义了QPainter的填充模式,具有样式、颜色、渐变以及纹理等属性。样式可以调用setstyle函数来设置,颜色可以用setcolor设置,纹理可以用settexture来设置.[1]:渐变的设置主要依靠QGradient对象,Qt提供了三种渐变,下面通过代码来认识线形渐变的使用:void Painttest::paintEvent(QPaintEvent*原创 2016-02-02 14:22:24 · 1219 阅读 · 0 评论 -
Qt(13):Qt的坐标体系
Qt里面有3种坐标,分别是逻辑坐标,窗口坐标,以及物理坐标.[0]:逻辑坐标就是我们提供给QPainter的坐标,它的值是不会变化的,是一个绝对的值.[1]:窗口坐标则是逻辑坐标经过的矩阵变换之后得到的坐标值,它代表的是绘制图形界面上的一个坐标系(默认这个坐标系是以左上角作为原点的).QPainter则提供了translate,shear,rotate,scale等函数来进行逻辑坐标到窗口坐标之间的原创 2016-02-02 16:57:44 · 519 阅读 · 0 评论 -
Qt实践之2048:
2048的实现,还有很多功能没有加,以后有时间再弄Game_1024_Window.h#ifndef GAME_1024_WINDOW_H#define GAME_1024_WINDOW_H#include <QMainWindow>#include "QGraphicsView"#include "gamecontroller.h"namespace Ui {class Game_102原创 2016-02-23 17:07:02 · 4034 阅读 · 0 评论 -
Qt信号槽函数用lambada表达式作为槽函数的陷阱
lambada表达式作为槽函数可能出错的地方是,如果不是通过参数绑定的变量,而是通过[&]来捕获的变量,当信号调用时绑定可能不是connect时候的那个变量了,它会被修改!!但是如果是[=]或者(args)形式传入的变量就不会有问题for(size_t i = 0;i<=1;++i) { Newspaper* that = nullptr; if(i == 0)原创 2016-03-21 22:47:03 · 1165 阅读 · 0 评论 -
Qt使用数据库(1)
首先在pro文件里面添加.QT += core gui sql然后创建连接:bool MainWindow:: connect(const QString &dbName){ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName(dbName);//数据库的名字,这里是Test(注意这里的原创 2016-04-08 12:33:26 · 1329 阅读 · 0 评论 -
Qt学习之路(10):自定义事件与事件控制的5大层次
首先回顾事件控制的5个层次:1. 重写paintEvent()、mousePressEvent()等事件处理函数。这是最普通、最简单的形式,同时功能也最简单。2. 重写event()函数。event()函数是所有对象的事件入口,QObject和QWidget中的实现,默认是把事件传递给特定的事件处理函数。3. 在特定对象上面安装事件过滤器。该过滤器仅过滤该对象接收到的事件。4. 在QCoreAppl原创 2015-12-23 21:31:18 · 859 阅读 · 0 评论 -
Qt学习之路(9):事件过滤器
首先简单描述一下事件过滤器,事件过滤器可以让我们对事件进行一些我们感兴趣的操作,它是QObject的函数,但是在QObject里面是一个空的函数体.我们需要重写这个函数,这样可以将一些我们感兴趣的操作进行过滤.比如文本编辑框,我们可以在MainWindow上重写这个过滤器,然后调用 text->installEventFilter(this);这样文本编辑框的事件在分发之前就会先过滤.下面的代码原创 2015-12-23 15:55:27 · 425 阅读 · 0 评论 -
QT学习之路(2):基础学习(1)
[0]下面的代码主要是用来熟悉connect函数的信号-槽(signal-slot)机制,槽在本例中是以函数的形式出现的,它类似于C++的function类型,可以接受static,lambda表达式.[1]qDebug()类似于C++的cout,需要在pro文件里加一行QMAKE_CXXFLAGS += -std=c++0x//暂时不懂为什么[2]信号和槽的机制必须要一致:所谓一致,是参数类型一致原创 2015-12-20 13:22:31 · 503 阅读 · 0 评论 -
QT学习之路(2):添加动作
下面的代码实现了一个主窗口以及相应的菜单栏,工具栏和状态栏.需要注意要先添加图片资源.#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic:原创 2015-12-20 18:47:18 · 811 阅读 · 0 评论 -
QT中关于QWidget的背景颜色和背景图片的设置
首先设置autoFillBackground属性为真 然后定义一个QPalette对象 设置QPalette对象的背景属性(颜色或图片) 最后设置QWidget对象的Palette 实例: QWidget *widget = new QWidget; widget->setAutoFillBackground(true);QPalette palette; palette.setCol转载 2015-12-20 18:47:59 · 1833 阅读 · 0 评论 -
在对话框和widget窗口添加菜单
对于QDialog或者QWidget怎么添加菜单呢?要记得,QToolBar以及QStatusBar都是QWidget的子类,因此我们就可以将其结合布局管理器添加到另外的QWidget上面。QLayout布局提供了setMenuBar()函数,可以方便的添加菜单栏。//window是一个widget类 auto layout = new QHBoxLayout(&window);//创建一个原创 2015-12-20 20:25:35 · 6064 阅读 · 0 评论 -
Qt学习之路(3):布局
布局可以使得控件随着窗口的变化而变化。#include <QApplication>#include "QSpinBox"#include "QWidget"#include "QSlider"#include "QHBoxLayout"#include "QStyle"#include "memory"int main(int argc, char *argv[]){ QA原创 2015-12-20 19:32:40 · 701 阅读 · 0 评论 -
Qt学习之路(4)创建对话框
代码片段1:模态对话框,所谓模态对话框,所谓模态对话框,就是会阻塞同一应用程序中其它窗口的输入。调用exec()实现.void MainWindow::open() { QDialog dialog; dialog.setWindowTitle(tr("Hello, dialog!")); dialog.exec(); }代码片段2:拥有父窗口的对话框.void原创 2015-12-20 21:27:24 · 503 阅读 · 0 评论 -
Qt学习之路(5):对话框传递数据|标准对话框QMessageBox
模态对话框的数据传递相对较为简单,只讨论非模态的对话框的数据传递。由于对话框关闭的时候会调用accept或者reject(),所以我们可以在里面进行处理.自己定义一个带button(Ok,Cancel)的对话框,然后进行在accept(),reject()函数里进行对数据的输出.void UserAgeDialog::accept()//在这里发送信号{ qDebug()<<"Dialog原创 2015-12-22 15:12:39 · 3380 阅读 · 0 评论 -
Qt学习之路(7):事件初了解|重写鼠标点击事件
事件驱动是界面的一个基本机制.当然Qt为我们提供了另外一种选择,信号槽.总的来说,当我们使用Qt的组件(比如QPushButton)的时候,我们关心信号,因为这个时候信号由具体的组件发出,当我们自己定义组件的时候,我们就关心事件,因为我们需要通过重写事件的处理函数来设置我们自己定义的组件的功能.比如下面的代码就派生了一个QLabel的子类,显示鼠标移动,点击,抬起时候的坐标.#ifndef EVEN原创 2015-12-22 21:49:38 · 10382 阅读 · 0 评论 -
QT学习之路(8):事件的传递和忽略
事件有两个函数,accept()和event(),前者代表该组件希望接受这个事件,这个事件将不会传播.而后者代表该组件希望忽略这个事件那么事件就会继续向它的父组件传播.所有事件都是默认为accept()的,但是在QWidget中的所有事件回调函数都是调用了ignore(),这样调用QWidegt的同名函数就会使得该事件继续传播.在我们上一个程序中,点击文本编辑框的事件会被文本编辑框接受并且停止传播.原创 2015-12-23 13:55:51 · 2044 阅读 · 0 评论 -
Qt使用数据库(2)
下面的代码将数据库里面的东西通过TableView显示出来,具体的参数参见文档#include "mainwindow.h"#include"QSqlQuery"#include "QSqlError"#include "QSqlTableModel"#include "QSqlRecord"#include"QTableView"#include"QHeaderView"#inclu原创 2016-04-08 17:44:11 · 714 阅读 · 0 评论