实现效果:
代码:
#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(); }