1.创建一个工程:
文件-新建-项目 选择Qt GUI Application

2.给项目命名,选择项目存储位置

3.项目配置
点next

默认勾选Core , GUI ,Widgets 三项即可。点next

如果想要将文件首字母小写,就勾选第一个选项:Lower Case file names。默认无需改动,点击finish,项目就创建完成了。
4.解决方案结构如下:

.ui 文件为画图工具,双击可以打开qt creator。
5.完整代码如下:
QTthread_practice.h
#pragma once #include <QtWidgets/QMainWindow> #include "ui_QTthread_practice.h" #include"qtimer.h" #include"qt_windows.h" #include<time.h> class QTthread_practice : public QMainWindow { Q_OBJECT public: QTthread_practice(QWidget* parent = Q_NULLPTR); QTimer* timer = new QTimer; ~QTthread_practice() { delete timer; } public slots: void lcdDisplay();//lcd显示 void on_pushButton_clicked(); private: Ui::QTthread_practiceClass ui; };
ui_QTthread_practice.h (如果在.ui中设置属性,这个文件自动生成,不需要自己写)
/******************************************************************************** ** Form generated from reading UI file 'QTthread_practice.ui' ** ** Created by: Qt User Interface Compiler version 5.14.2 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_QTTHREAD_PRACTICE_H #define UI_QTTHREAD_PRACTICE_H #include <QtCore/QVariant> #include <QtWidgets/QApplication> #include <QtWidgets/QLCDNumber> #include <QtWidgets/QMainWindow> #include <QtWidgets/QMenuBar> #include <QtWidgets/QPushButton> #include <QtWidgets/QStatusBar> #include <QtWidgets/QToolBar> #include <QtWidgets/QWidget> QT_BEGIN_NAMESPACE class Ui_QTthread_practiceClass { public: QWidget *centralWidget; QLCDNumber *lcdNumber; QPushButton *pushButton; QMenuBar *menuBar; QToolBar *mainToolBar; QStatusBar *statusBar; void setupUi(QMainWindow *QTthread_practiceClass) { if (QTthread_practiceClass->objectName().isEmpty()) QTthread_practiceClass->setObjectName(QString::fromUtf8("QTthread_practiceClass")); QTthread_practiceClass->resize(407, 194); centralWidget = new QWidget(QTthread_practiceClass); centralWidget->setObjectName(QString::fromUtf8("centralWidget")); lcdNumber = new QLCDNumber(centralWidget); lcdNumber->setObjectName(QString::fromUtf8("lcdNumber")); lcdNumber->setGeometry(QRect(10, 0, 381, 91)); lcdNumber->setProperty("value", QVariant(0.000000000000000)); lcdNumber->setProperty("intValue", QVariant(0)); pushButton = new QPushButton(centralWidget); pushButton->setObjectName(QString::fromUtf8("pushButton")); pushButton->setGeometry(QRect(150, 100, 92, 28)); QTthread_practiceClass->setCentralWidget(centralWidget); menuBar = new QMenuBar(QTthread_practiceClass); menuBar->setObjectName(QString::fromUtf8("menuBar")); menuBar->setGeometry(QRect(0, 0, 407, 26)); QTthread_practiceClass->setMenuBar(menuBar); mainToolBar = new QToolBar(QTthread_practiceClass); mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); QTthread_practiceClass->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(QTthread_practiceClass); statusBar->setObjectName(QString::fromUtf8("statusBar")); QTthread_practiceClass->setStatusBar(statusBar); retranslateUi(QTthread_practiceClass); QObject::connect(pushButton, SIGNAL(clicked()), QTthread_practiceClass, SLOT(on_pushButton_clicked())); QObject::connect(lcdNumber, SIGNAL(overflow()), QTthread_practiceClass, SLOT(lcdDisplay_on())); QMetaObject::connectSlotsByName(QTthread_practiceClass); } // setupUi void retranslateUi(QMainWindow *QTthread_practiceClass) { QTthread_practiceClass->setWindowTitle(QCoreApplication::translate("QTthread_practiceClass", "QTthread_practice", nullptr)); pushButton->setText(QCoreApplication::translate("QTthread_practiceClass", "\345\274\200\345\247\213", nullptr)); } // retranslateUi }; namespace Ui { class QTthread_practiceClass: public Ui_QTthread_practiceClass {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_QTTHREAD_PRACTICE_H
QTthread_practice.cpp
#include "QTthread_practice.h" #include <QDateTimeEdit> QTthread_practice::QTthread_practice(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); //设置lcdDisplay的属性 ui.lcdNumber->setDigitCount(10); //设置晶体管控件QLCDNumber能显示的位数 ui.lcdNumber->setMode(QLCDNumber::Dec);//设置显示的模式为十进制 ui.lcdNumber->setSegmentStyle(QLCDNumber::Flat);//设置显示方式 //信号和槽 //connect(timer, SIGNAL(timeout()), this, SLOT(lcdDisplay())); connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked())); } //lcdDisplay开始显示 void QTthread_practice::lcdDisplay() { //获取系统当前时间 QTime time = QTime::currentTime(); //设置晶体管控件QLCDNumber上显示的内容 ui.lcdNumber->display(time.toString("hh:mm:ss")); } void QTthread_practice::on_pushButton_clicked() { //新建一个QTimer对象 //设置定时器每个多少毫秒发送一个timeout()信号 timer->setInterval(1000); //启动定时器 timer->start(); connect(timer, SIGNAL(timeout()), this, SLOT(lcdDisplay())); }
main.cpp (默认生成,无需改动)
#include "QTthread_practice.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTthread_practice w; w.show(); return a.exec(); }
运行结果如下:

版权声明:本文为merenguesl原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。