QT的一些知识点

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、QMessageBox的简单的用法:QMessageBox::information(this,"infor","this is OK");</span>

2、pushbutton设置透明按钮ui.m_btnOk->setFlat(true);

3、Qt中使用定时器:

test8_2A.h文件:

#ifndef TEST8_2A_H
#define TEST8_2A_H

#include <QtGui/QMainWindow>
#include "ui_test8_2a.h"

class Test8_2A : public QMainWindow
{
	Q_OBJECT

public:
	Test8_2A(QWidget *parent = 0, Qt::WFlags flags = 0);
	~Test8_2A();

	// 重写此函数 (继承自QObject)
	virtual void timerEvent ( QTimerEvent * event );

private:
	Ui::Test8_2AClass ui;

	// 
	int m_timerId; // 每个Timer有一个id
};

#endif // TEST8_2A_H
test8_2A.c文件:

#include <QTime>
#include <QDebug>



Test8_2A::Test8_2A(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);

	// 启动定时器, 指定时间间隔(毫秒) 
	m_timerId = startTimer(1000);
}

Test8_2A::~Test8_2A()
{

}

// 定时器处理函数
void Test8_2A::timerEvent ( QTimerEvent * event )
{
	// 可以有多个定时器,每个的定时器有不同的处理
	if(event->timerId() == m_timerId)
	{		
		QTime now = QTime::currentTime();
		QString text = now.toString("HH:mm:ss");
		//qDebug() << text;

		ui.labelTime->setText(text);

	}

}

4、Qt中sleep的使用

如果平台是windows,则在文件中添加头文件:#include <windows.h>,然后使用Sleep(1000);即可。

5、重绘函数为update();

6、图片的绘制

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QFrame>
#include <QPainter>
#include <QPixmap>

class MyWidget : public QFrame
{
	Q_OBJECT

public:
	MyWidget(QWidget *parent);
	~MyWidget();

private:
	void paintEvent(QPaintEvent * event);
private:
	QPixmap m_pixmap;
	
};

#endif // MYWIDGET_H

#include "MyWidget.h"

MyWidget::MyWidget(QWidget *parent)
	: QFrame(parent)
{
	m_pixmap.load("C:/11111.jpg");
}

MyWidget::~MyWidget()
{

}
void MyWidget::paintEvent(QPaintEvent * event)
{

	QPainter painter(this);
	int width=this->width();
	int height=this->height();
	QRect target(0,0,width/2,height/2);
	int im_width=m_pixmap.width();
	int im_height=m_pixmap.height();
	QRect source(0,0,im_width,im_height);
	painter.drawPixmap(target,m_pixmap,source);
	/*painter.setPen(QPen(QColor(0xff,0,0)));
	painter.drawRect(40,40,40,10);*/

	
}

7、鼠标的移动和图形的绘制

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QFrame>
#include <QPainter>
#include <QMouseEvent>
#include <QVector>
class MyWidget : public QFrame
{
	Q_OBJECT

public:
	MyWidget(QWidget *parent);
	~MyWidget();

private:
	void paintEvent(QPaintEvent *event);
	void mouseDoubleClickEvent(QMouseEvent *event);
	void mouseMoveEvent(QMouseEvent *event);
	void mousePressEvent(QMouseEvent *event);
	void mouseReleaseEvent(QMouseEvent *event);
private:
	bool m_pressFlag;
	QVector<QPoint> m_point;
};

#endif // MYWIDGET_H

#include "MyWidget.h"
#include <QDebug>
MyWidget::MyWidget(QWidget *parent)
	: QFrame(parent)
{
	m_pressFlag=false;
}

MyWidget::~MyWidget()
{

}

void MyWidget::paintEvent(QPaintEvent *event)
{
	QPainter painter(this);
	QColor red(0xff,0xff,0xff);
	QBrush brush(red);
	painter.setBrush(brush);
	painter.drawRect(0,0,this->width(),this->height());
	QPen pen(QColor(0xff,0,0));
	if (m_pressFlag)
	{
		for(int i=0;i<m_point.size()-1;i++)
		{
			QPoint &p1 =m_point[i];
			QPoint &p2 =m_point[i+1];
			painter.drawLine(p1,p2);
		}
	}
}

void MyWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
	QWidget::mouseDoubleClickEvent(event);
}
void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
	if (m_pressFlag)
	{
		QPoint pos=event->pos();
		qDebug("(%d,%d)",pos.x(),pos.y());
		m_point.append(pos);
		update();
		
	}
}
void MyWidget::mousePressEvent(QMouseEvent *event)
{
	m_pressFlag=true;
	m_point.clear();
}
void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
	m_pressFlag=false;
}

8、qt中加载图片

首先创建MyWidget类,此类基于QFrame类

#ifndef MYPICTURE_H
#define MYPICTURE_H

#include <QFrame>
#include <QPixmap>
#include <QPainter>
class MyPicture : public QFrame
{
	Q_OBJECT

public:
	MyPicture(QWidget *parent);
	~MyPicture();

private:
	QPixmap m_picture;
private:
	void paintEvent(QPaintEvent *event);
};

#endif // MYPICTURE_H

#include "MyPicture.h"

MyPicture::MyPicture(QWidget *parent)
	: QFrame(parent)
{
	m_picture.load("C:\\1.jpg");
}

MyPicture::~MyPicture()
{

}
void MyPicture::paintEvent(QPaintEvent *event)
{

	QPainter painter(this);
	painter.drawPixmap(0,0,this->width(),this->height(),m_picture);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值