QT透明显示文字

实现效果:


代码:

#ifndef IMAGINIST_H
#define IMAGINIST_H

#include <QtWidgets/QWidget>
#include <QtWidgets/QLabel>
#include <QtCore/QPoint>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSql>
#include <QPalette>
#include <QColor>
#include <QFont>
#include <QTimer>
#include <QTime>
#include "ui_imaginist.h"

class imaginist : public QWidget
{
	Q_OBJECT

public:
	imaginist(QWidget *parent = 0);
	~imaginist();
protected:
	void mousePressEvent(QMouseEvent *event);
	void mouseMoveEvent(QMouseEvent *event);
private:
	Ui::imaginistClass ui;
	QPoint Position;
	QPalette pe;
	QFont font;
	QTimer * timer;
	QSqlDatabase db;
	QColor color;
	QTime time;
private slots:
	void showText();
};

#endif // IMAGINIST_H

#include "imaginist.h"
#include <QLabel>
#include <QPalette>
#include <QColor>
#include <QMouseEvent>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSql>
#include <QTimer>
#include <QTime>

imaginist::imaginist(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	font.setPointSize(30);
	font.setBold(true);

	ui.showLabel->setFont(font);
	ui.showLabel->setWordWrap(true);

	db = QSqlDatabase::addDatabase("QMYSQL");
	db.setHostName("localhost");
	db.setDatabaseName("muxin");
	db.setUserName("root");
	db.setPassword("123");

	timer = new QTimer;
	connect(timer, SIGNAL(timeout()), this, SLOT(showText()));
	timer->start(5000);
}

imaginist::~imaginist()
{
	delete timer;
	timer = NULL;
	db.close();
}

void imaginist::mousePressEvent(QMouseEvent *event)
{
	if (event->button() == Qt::LeftButton)
	{
		Position = event->globalPos() - frameGeometry().topLeft();
		event->accept();
	}
	else if (event->button() == Qt::RightButton)
	{
		close();
	}
}
void imaginist::mouseMoveEvent(QMouseEvent *event)
{
	move(event->globalPos() - Position);
	event->accept();
}

void imaginist::showText()
{
	time = QTime::currentTime();
	qsrand(time.msec() + time.second() * 1000);
	//color = QColor((qrand() % 256, qrand() % 256, qrand() % 256));
	color = QColor::fromHsl(rand() % 360, rand() % 256, rand() % 200);
	pe.setColor(QPalette::WindowText, color);
	ui.showLabel->setPalette(pe);
	QString sql = "SELECT sentence FROM muxin WHERE id = ";
	int count;
	if (db.open())
	{
		QSqlQuery query;
		query.exec("SELECT COUNT(*) FROM muxin");
		while (query.next())
		{
			count = query.value(0).toInt();
		}
		sql += QString::number(qrand() % count);
		query.exec(sql);
		while (query.next())
		{
			ui.showLabel->setText(query.value(0).toString());
		}
	}
}

#include "imaginist.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	imaginist w;
	w.setWindowOpacity(1.0);
	w.setWindowFlags(Qt::FramelessWindowHint);
	w.setAttribute(Qt::WA_TranslucentBackground);
	w.show();
	return a.exec();
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值