QT新手日记025 - W002程序代码

一、pro文件:W002.pro

cpp 复制代码
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    wintwo.cpp

HEADERS += \
    wintwo.h

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES +=

二、头文件:wintwo.h

cpp 复制代码
#ifndef WINTWO_H
#define WINTWO_H

#include <QMainWindow>

class WinTwo : public QMainWindow
{
    Q_OBJECT

public:
    WinTwo(QWidget *parent = nullptr);
    ~WinTwo();
    QString  GetTipInformation(int Index,QDate d,QTime t,QString obj);
private:
    int nowIndex=0;
};
#endif // WINTWO_H

三、主程序:main.cpp

cpp 复制代码
#include "wintwo.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    WinTwo w;
    w.show();
    return a.exec();
}

四、核心程序:wintwo.cpp

cpp 复制代码
#include "wintwo.h"
#include<QGroupBox>
#include<QLabel>
#include<QComboBox>
#include<QDateEdit>
#include<QStringList>
#include<QTextEdit>
#include<QPushButton>
#include<QFile>
#include<QDir>
#include<QDebug>
#include<QGuiApplication>
#include<QScreen>


WinTwo::WinTwo(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle("QT第二个程序 - 每日一题");
    setFixedSize(304,504);
    QGroupBox *grp = new QGroupBox("每日一题",this);
    grp->move(2,2);
    grp->resize(300,500);

    QLabel *l1 = new QLabel("日期:",grp);
    l1->resize(80,30);
    l1->move(10,30);

    QLabel *l2 = new QLabel("时间:",grp);
    l2->resize(80,30);
    l2->move(10,60);

    QLabel *l3 = new QLabel("主题:",grp);
    l3->resize(80,30);
    l3->move(10,90);

    QDateEdit *cmbdate = new QDateEdit(grp);
    cmbdate->resize(120,30);
    cmbdate->move(95,30);
    cmbdate->setDate(QDate::currentDate());
    QTimeEdit *cmbtime = new QTimeEdit(grp);
    cmbtime->resize(120,30);
    cmbtime->move(95,60);
    cmbtime->setTime(QTime::currentTime());
    QComboBox *cmbobj = new QComboBox(grp);
    cmbobj->resize(120,30);
    cmbobj->move(95,90);

    cmbobj->addItems({"QWidget","QMainWindow","QDialog"});
    cmbobj->setCurrentIndex(0);

    QTextEdit *txt = new QTextEdit(grp);
    txt->resize(280,500-140);
    txt->move(10,130);
    txt->setReadOnly(true);
    QPushButton *btnup = new QPushButton("上一题",grp);
    btnup->resize(65,40);
    btnup->move(225,30);
    QPushButton *btndw = new QPushButton("下一题",grp);
    btndw->resize(65,40);
    btndw->move(225,80);
    connect(btnup,&QPushButton::clicked,this,[=](){
        if(nowIndex<=0)
        {
            nowIndex=100;
        }
        else
        {
            nowIndex--;
        }
          txt->setText(GetTipInformation(nowIndex,cmbdate->date(),cmbtime->time(),cmbobj->currentText()));

        //上一题
    });
    connect(btndw,&QPushButton::clicked,this,[=](){
        if(nowIndex>=100)
        {
            nowIndex=0;
        }
        else
        {
            nowIndex++;
        }
          txt->setText(GetTipInformation(nowIndex,cmbdate->date(),cmbtime->time(),cmbobj->currentText()));
        //上一题
    });
    txt->setText(GetTipInformation(nowIndex,cmbdate->date(),cmbtime->time(),cmbobj->currentText()));

    this->move((QGuiApplication::primaryScreen()->size().width()-this->width())/2,
               (QGuiApplication::primaryScreen()->size().height()-this->height())/2);
}

QString  WinTwo::GetTipInformation(int Index,QDate d,QTime t,QString obj)
{
    QString path=QDir::currentPath()+ "/TipFiles/Tipinfo"+QString::number(Index)+".txt";
    QFile file(path);
    QString dat="没有发现文件"+path;
    if(file.exists())
    {
        file.open(QIODevice::ReadOnly);
        dat=file.readAll();
        file.close();
    }
    QString result=QString("每日一题[%1 %2]=>%3:%4\n%5").
            arg(d.toString("yyyy-MM-dd")).arg(t.toString("hh:mm:ss")).arg(obj).
            arg(QString::number(Index)).arg(dat);

    return result;
}
WinTwo::~WinTwo()
{
}

五、每日一题内容以Tipinfo0..n.txt命名的文件放在编译目录下的TipFiles目录下。

完成的界面截图(Deepin系统)

相关推荐
xiaoye-duck16 分钟前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚39 分钟前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
FRing031 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光1 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
starzy19902 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala
Sakura_j_h_2 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
白杨尚青4 小时前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
橙橙笔记4 小时前
QT的学习第四部分
linux·qt·学习·音视频
.道阻且长.4 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
starzy19904 小时前
深入理解Scala匿名函数:函数式编程基石
开发语言·scala