Qt仿制Windows10记事本

2024-03-21 19:59
文章标签 qt 记事本 windows10 仿制

本文主要是介绍Qt仿制Windows10记事本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用Qt做的一个仿制windows10的简易记事本,只有部分功能和win10记事本有一点像.

先看效果图吧:

先使用Qt创建一个GUI widget Application 的 QMainWindow 项目,工程目录如下所示:

   main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
#include <QCoreApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator* pTranslator = new QTranslator();pTranslator->load(":/res/qm/qt_zh_CN.qm");              //资源里需要有这个文件QCoreApplication::installTranslator(pTranslator);       //将字体对话框翻译成中文MainWindow w;w.show();return a.exec();
}

  mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QString>
#include <QLabel>
#include <QCoreApplication>
#include <QTranslator>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;bool saved;QString savePath;QLabel* first_statusLabel;      //声明两个标签对象,用于显示状态信息QLabel* second_statusLabel;QLabel* third_statusLabel;QString file_path;bool ctrl,ctrl2,ctrl3;QStringList s_str_list,s_str_list2,s_str_list3;bool m_bDisplayChinese;void init_statusBar();          //初始化状态栏void WriteIni(QString);                //创建ini文件void WriteIni(int,QString,bool,bool);                //创建ini文件void ReadIni();                 //读取ini文件signals:void opened();void mySignal(QString title);public slots:void onActionNewTriggered(bool checked);    //新建void onActionOpenTriggered(bool checked);   //打开void onActionSaveTriggered(bool checked);   //保存void onActionSaveasTriggered(bool checked); //另存为void onActionExitTriggered(bool checked);   //退出void onActionUndoTriggered(bool checked);   //撤销void onActionPasteTriggered(bool checked);  //粘贴void onActionRedoTriggered(bool checked);   //重做void onActionRemoveSpaceTriggered(bool checked);    //去掉换行void onActionSpaceTriggered(bool checked);          //去掉空格void onActionFontTriggered(bool checked);           //修改字体void onActionColorTriggered(bool checked);          //字体颜色void onActionBackGroundTriggered(bool checked);     //背景颜色void onActionCenterTriggered(bool checked);         //居中显示void onActionViewHelpTriggered(bool checked);       //查看帮助void switchLanguage();                              //切换语言void onActionAboutNotepadTriggered(bool checked);   //关于记事本void mySlot(QString title2);private slots:void onEdited();void do_cursorChanged();        //获取光标位置信息void closeEvent(QCloseEvent* e);//关闭窗口事件
};#endif // MAINWINDOW_H

  mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QDesktopServices>
#include <QUrl>
#include <QFont>
#include <QFontDialog>
#include <QColorDialog>
#include <QTextStream>
#include <QSettings>
#pragma execution_character_set("utf-8");
#include "ColorDlg.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow),saved(true),ctrl(false),ctrl2(false),ctrl3(false),m_bDisplayChinese(false)
{ui->setupUi(this);init_statusBar();                                       //初始化底部的状态栏this->setWindowTitle(tr("新建文本文档.txt - 记事本"));this->ui->textEdit->setStyleSheet("padding: -1");this->setCentralWidget(ui->textEdit);                   //去掉TextEdit的外边蓝色线ReadIni();                                              //读取配置文件this->connect(ui->actionNew,SIGNAL(triggered(bool)),this,SLOT(onActionNewTriggered(bool)));                 //新建this->connect(ui->actionOpen,SIGNAL(triggered(bool)),this,SLOT(onActionOpenTriggered(bool)));               //打开this->connect(ui->actionSave,SIGNAL(triggered(bool)),this,SLOT(onActionSaveTriggered(bool)));               //保存this->connect(ui->actionSaveas,SIGNAL(triggered(bool)),this,SLOT(onActionSaveasTriggered(bool)));           //另存为this->connect(ui->actionExit,SIGNAL(triggered(bool)),this,SLOT(onActionExitTriggered(bool)));               //退出this->connect(ui->actionPaste,SIGNAL(triggered(bool)),this,SLOT(onActionPasteTriggered(bool)));             //粘贴this->connect(ui->actionRedo,SIGNAL(triggered(bool)),this,SLOT(onActionRedoTriggered(bool)));               //重做this->connect(ui->actionUndo,SIGNAL(triggered(bool)),this,SLOT(onActionUndoTriggered(bool)));               //撤销this->connect(ui->actionRemoveSpace,SIGNAL(triggered(bool)),this,SLOT(onActionRemoveSpaceTriggered(bool))); //删除空格this->connect(ui->actionSpace,SIGNAL(triggered(bool)),this,SLOT(onActionSpaceTriggered(bool)));             //去掉空格this->connect(ui->actionFont,SIGNAL(triggered(bool)),this,SLOT(onActionFontTriggered(bool)));               //字体设置this->connect(ui->actionColor,SIGNAL(triggered(bool)),this,SLOT(onActionColorTriggered(bool)));             //字体颜色设置this->connect(ui->actionBackGround,SIGNAL(triggered(bool)),this,SLOT(onActionBackGroundTriggered(bool)));   //背景颜色设置this->connect(ui->actionCenter,SIGNAL(triggered(bool)),this,SLOT(onActionCenterTriggered(bool)));           //字体居中this->connect(ui->actionHelp,SIGNAL(triggered(bool)),this,SLOT(onActionViewHelpTriggered(bool)));           //帮助this->connect(ui->actionLanguage,SIGNAL(triggered(bool)),this,SLOT(switchLanguage()));                      //语言切换this->connect(ui->actionAboutNotepad,SIGNAL(triggered(bool)),this,SLOT(onActionAboutNotepadTriggered(bool)));//版本信息(随便写的)this->connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(do_cursorChanged()));                  //获得光标所在位置this->connect(ui->textEdit,SIGNAL(textChanged()),this,SLOT(onEdited()));                                    //断是否编辑了文件,若编辑了,退出时提示保存this->connect(this,SIGNAL(mySignal(QString)),SLOT(mySlot(QString)));                                        //为记事本添加标题
}MainWindow::~MainWindow()
{delete ui;if(first_statusLabel)delete first_statusLabel;if(second_statusLabel)delete second_statusLabel;if(third_statusLabel)delete third_statusLabel;s_str_list.clear();s_str_list2.clear();
}void MainWindow::init_statusBar()                           //底部的状态显示栏
{QStatusBar* bar = ui->statusBar;                        //获取状态栏first_statusLabel = new QLabel;                         //新建标签first_statusLabel->setMinimumSize(150,25);              //设置标签最小尺寸
//    first_statusLabel->setFrameShape(QFrame::WinPanel);   //设置便签形状(外边加一个黑框)
//    first_statusLabel->setFrameShadow(QFrame::Sunken);    //设置便签阴影second_statusLabel = new QLabel;second_statusLabel->setMinimumSize(80,25);third_statusLabel = new QLabel;third_statusLabel->setMinimumSize(100,25);bar->addPermanentWidget(first_statusLabel);bar->addWidget(first_statusLabel);bar->addPermanentWidget(second_statusLabel);bar->addWidget(second_statusLabel);bar->addPermanentWidget(third_statusLabel);bar->addWidget(third_statusLabel);first_statusLabel->setText(tr(" Windows(CRLF) "));    //初始化内容second_statusLabel->setText(tr(" 欢迎使用文本编辑器 "));third_statusLabel->setText(tr(" 慕华思弦 "));
}void MainWindow::WriteIni(QString background)               //写入配置文件 背景颜色的设置...暂时未写
{QSettings *pIni = new QSettings(QCoreApplication::applicationDirPath()+"/config.ini",QSettings::IniFormat);//    pIni->setValue("/color/text",colorText);
//    pIni->setValue("/color/highlight",highlight);pIni->setValue("/color/background",background);
//    pIni->setValue("/color/select",select);delete pIni;
}void MainWindow::WriteIni(int pointsize, QString family, bool bold, bool italic)        //字体设置 写入配置文件
{QSettings *pIni = new QSettings(QCoreApplication::applicationDirPath()+"/config.ini",QSettings::IniFormat);pIni->setValue("/font/size",pointsize);pIni->setValue("/font/family",family);pIni->setValue("/font/bold",bold);pIni->setValue("/font/italic",italic);delete pIni;
}void MainWindow::ReadIni()          //字体设置 读取配置信息
{QSettings *pIni = new QSettings(QCoreApplication::applicationDirPath()+"/config.ini",QSettings::IniFormat);int pointSize2 = pIni->value("/font/size").toInt();QString family = pIni->value("/font/family").toString();bool bold = pIni->value("/font/bold").toBool();bool italic = pIni->value("/font/italic").toBool();QString background = pIni->value("/color/background").toString();QFont font;font.setPointSize(pointSize2);font.setFamily(family);font.setBold(bold);font.setItalic(italic);ui->textEdit->setFont(font);if(!background.isEmpty()){ui->textEdit->setStyleSheet("QTextEdit{background:#" + background + "};");}delete pIni;this->ui->textEdit->setStyleSheet("padding: -1");this->setCentralWidget(ui->textEdit);           //去掉TextEdit的外边蓝色线
}void MainWindow::onActionNewTriggered(bool checked)         //新建一个文件
{this->ui->textEdit->setStyleSheet("padding: -1");if(this->saved){ui->textEdit->clear();this->saved = true;}else{int tag = QMessageBox::question(NULL,tr("记事本"),tr("是否保存文件?"),QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);if(tag == QMessageBox::Yes){this->onActionSaveTriggered(false);}ui->textEdit->clear();this->saved = true;}
}void MainWindow::onActionOpenTriggered(bool checked)        //打开一个文件
{QString displayString;bool center = false;if(saved == false){int tag = QMessageBox::question(NULL,tr("记事本"),tr("是否保存文件?"),QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);if(tag == QMessageBox::Yes){this->onActionSaveTriggered(false);}ui->textEdit->clear();this->saved = true;return;}if(checked != true){file_path = QFileDialog::getOpenFileName(this,tr("选择路径"),".","*.txt");if(file_path.isEmpty())return;}QSettings *pIni = new QSettings(QCoreApplication::applicationDirPath()+"/config.ini",QSettings::IniFormat);QString background = pIni->value("/color/background").toString();this->ui->textEdit->setStyleSheet("QTextEdit{background:#" + background + ";}");delete pIni;QFile R_txt(file_path);bool tag = R_txt.open(QIODevice::ReadOnly | QIODevice::Text);if(!tag && checked != true){QMessageBox::information(this,tr("提示"),tr("文件打开失败"));return;}if(checked != true)emit mySignal(file_path);QTextCodec* codec = QTextCodec::codecForName("GBK");    //字段 别名为中文while(!R_txt.atEnd()){QByteArray line = R_txt.readLine();QString linestr = codec->toUnicode(line);if(linestr.left(10)=="#<center>#"){center = true;linestr = linestr.right(linestr.length() - 10);}//QString linestr = codec->toUnicode(line).trimmed();   //读取文件的时候就去掉了换行if(linestr.isEmpty())continue;displayString.append(linestr);}ui->textEdit->clear();ui->textEdit->setPlainText(displayString);if(center)ui->textEdit->document()->setDefaultTextOption(QTextOption(Qt::AlignHCenter));this->saved = true;this->ui->textEdit->setStyleSheet("padding: -1");this->setCentralWidget(ui->textEdit);           //去掉TextEdit的外边蓝色线
}void MainWindow::onActionSaveTriggered(bool checked)            //保存一个文件
{if(savePath.isEmpty()){QString sfile_path;while(sfile_path.isEmpty()){QString TitleName = this->windowTitle();int Title_lengrh = TitleName.length();int File_length  = Title_lengrh-10;QString FileName = TitleName.left(File_length);sfile_path = QFileDialog::getSaveFileName(this,tr("另存为"),tr("%1").arg(FileName),tr("(文本文档)*.txt"));if(sfile_path.isEmpty())return;}this->savePath = sfile_path;}QFile txt(this->savePath);bool tag = txt.open(QIODevice::WriteOnly);if(tag){QTextStream out(&txt);out.setCodec(QTextCodec::codecForName("unicode"));QString str = ui->textEdit->toPlainText();if(ctrl3){str = "#<center>#" + str;}out << str;txt.close();//txt.write(ui->textEdit->toPlainText().toStdString().data());  //另一种写入文件方式}else{QMessageBox::critical(NULL,tr("错误"),tr("无法打开文件,请检查对文件目录是否具有读写权限"),QMessageBox::Yes,QMessageBox::Yes);}this->saved = true;
}void MainWindow::onActionSaveasTriggered(bool checked)          //另存为
{this->savePath.clear();this->onActionSaveTriggered(checked);
}void MainWindow::onActionExitTriggered(bool checked)            //退出
{this->close();
}void MainWindow::onActionUndoTriggered(bool checked)            //撤消
{ui->textEdit->undo();
}void MainWindow::onActionPasteTriggered(bool checked)           //粘贴
{ui->textEdit->paste();
}void MainWindow::onActionRedoTriggered(bool checked)            //重做
{ui->textEdit->redo();
}void MainWindow::onActionRemoveSpaceTriggered(bool checked)     //删除空格
{QString s_str = ui->textEdit->toPlainText();s_str_list.append(s_str);if(ctrl == false){s_str.replace("\n","");ctrl = true;}else if(ctrl == true){s_str = s_str_list.at(0);ctrl = false;}if(s_str.isEmpty())return;ui->textEdit->setPlainText(s_str);
}void MainWindow::onActionSpaceTriggered(bool checked)       //去掉空格
{QString s_str2 = ui->textEdit->toPlainText();s_str_list2.append(s_str2);if(ctrl2 == false){s_str2.replace(" ","");ctrl2 = true;}else if(ctrl2 == true){s_str2 = s_str_list2.at(0);ctrl2 = false;}if(s_str2.isEmpty())return;ui->textEdit->setPlainText(s_str2);
}void MainWindow::onActionFontTriggered(bool checked)            //字体设置
{bool ok;QFont font = QFontDialog::getFont(&ok,this);if(ok){ui->textEdit->setFont(font);int pointSize = font.pointSize();QString family = font.family();bool bold = font.bold();bool italic = font.italic();WriteIni(pointSize,family,bold,italic);}elsereturn;onActionOpenTriggered(true);ui->textEdit->setFont(font);
}void MainWindow::onActionColorTriggered(bool checked)           //字体颜色设置
{ColorDlg dlg;           //打开新对话框dlg.exec();QColor cur_color1 = dlg.color1;     //文字颜色QColor cur_color2 = dlg.color2;     //高亮颜色QColor cur_color4 = dlg.color4;     //选中颜色QPalette palette = ui->textEdit->palette();if(cur_color1.isValid())palette.setColor(QPalette::Text,cur_color1);if(cur_color2.isValid())palette.setColor(QPalette::HighlightedText,cur_color2);if(cur_color4.isValid())palette.setColor(QPalette::Highlight,cur_color4);if(cur_color1.isValid() || cur_color2.isValid() || cur_color4.isValid())ui->textEdit->setPalette(palette);//    if(cur_color3.isValid())
//    {
//        QRgb r_rgb = cur_color3.rgb();
//        sRgbStr_3 = QString::number(r_rgb,16);
//        QString mRgbStr = "QTextEdit{background:#" + sRgbStr_3 + "};";
//        ui->textEdit->setStyleSheet(mRgbStr);
//    }
//    WriteIni(sRgbStr_3);//    QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));
//    QRgb r_rgb = color.rgb();
//    QString mRgbStr = "QTextEdit{background:#" + QString::number(r_rgb,16) + "};";
//    ui->textEdit->setStyleSheet(mRgbStr);//    QPalette palette = ui->textEdit->palette();
//    palette.setColor(QPalette::Text,QColor(222,180,180));
//    palette.setColor(QPalette::HighlightedText,QColor(111,70,70));
//    palette.setColor(QPalette::Highlight,QColor(111,200,200));
//    ui->textEdit->setPalette(palette);//    int start = ui->textEdit->textCursor().selectionStart();
//    int end   = ui->textEdit->textCursor().selectionEnd();
//    QTextCursor cursor = ui->textEdit->textCursor();
//    ui->textEdit->setTextBackgroundColor(color);
}void MainWindow::onActionBackGroundTriggered(bool checked)          //背景颜色设置
{QString sRgbStr;QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));if(color.isValid()){QRgb r_rgb = color.rgb();sRgbStr = QString::number(r_rgb,16);ui->textEdit->setStyleSheet("QTextEdit{background:#" + sRgbStr + "};");}WriteIni(sRgbStr);this->ui->textEdit->setStyleSheet("padding: -1");this->setCentralWidget(ui->textEdit);           //去掉TextEdit的外边蓝色线
}void MainWindow::onActionCenterTriggered(bool checked)              //字体居中
{if(ctrl3 == false){ui->textEdit->document()->setDefaultTextOption(QTextOption(Qt::AlignHCenter));ctrl3 = true;}else if(ctrl3 == true){ui->textEdit->document()->setDefaultTextOption(QTextOption(Qt::AlignLeft));ctrl3 = false;}
}void MainWindow::onActionViewHelpTriggered(bool checked)            //帮助
{const QUrl url("https://blog.csdn.net/Superman___007");QDesktopServices::openUrl(url);
}void MainWindow::switchLanguage()                                   //语言切换功能
{QTranslator* sTranslator = new QTranslator();m_bDisplayChinese = !m_bDisplayChinese;if (m_bDisplayChinese){sTranslator->load(":/res/qm/language/langEnglish.qm");              //资源里需要有这个文件}else{sTranslator->load(":/res/qm/language/langChinese.qm");}qApp->installTranslator(sTranslator);ui->retranslateUi(this);
}void MainWindow::onActionAboutNotepadTriggered(bool checked)        //随便写的
{QMessageBox::information(this,tr("提示"),tr("当前记事本信息\n版本:12.121.46"));return;
}void MainWindow::mySlot(QString title2)     //为记事本添加标题
{QString title = title2 + tr(" - 记事本");this->setWindowTitle(title);
}void MainWindow::onEdited()             //判断是否编辑了文件,若编辑了,退出时提示保存
{if(ui->textEdit->toPlainText().isEmpty())return;saved = false;
}void MainWindow::do_cursorChanged()     //获得光标所在位置
{//获取textEdit的所有行数//int rowNum = ui->textEdit->document()->blockCount();//获取光标所在列的列号const QTextCursor cursor = ui->textEdit->textCursor();int colNum = cursor.columnNumber()+ 1;int rowNum = cursor.blockNumber() + 1;//在状态栏显示光标位置second_statusLabel->setText(tr(" 第 %1 行 第 %2 列 ").arg(rowNum).arg(colNum));
}void MainWindow::closeEvent(QCloseEvent *e)         //关闭对话框事件
{if(saved == false){int tag = QMessageBox::question(NULL,tr("记事本"),tr("是否保存文件?"),QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);if(tag == QMessageBox::Yes){this->onActionSaveTriggered(false);}ui->textEdit->clear();this->saved = true;}this->close();
}

colordlg.h

#ifndef COLORDLG_H
#define COLORDLG_H#include <QDialog>namespace Ui {
class ColorDlg;
}class ColorDlg : public QDialog
{Q_OBJECTpublic:explicit ColorDlg(QWidget *parent = 0);~ColorDlg();QColor color1,color2,color3,color4;private slots:void on_pushButton_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();private:Ui::ColorDlg *ui;
};#endif // COLORDLG_H

colordlg.cpp

#include "colordlg.h"
#include "ui_colordlg.h"
#include <QColorDialog>ColorDlg::ColorDlg(QWidget *parent) :QDialog(parent),ui(new Ui::ColorDlg)
{ui->setupUi(this);setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);this->setWindowIcon(QIcon(":/res/image/Paint.ico"));this->ui->pushButton->setStyleSheet("QPushButton{background-color: rgb(225, 225, 225);border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(255,236,139); color: black;}""QPushButton:pressed{background-color:rgb(255, 210, 139);border-style: inset;}");//    this->ui->pushButton_2->setStyleSheet("QPushButton{background-color: rgb(225, 225, 225);border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}"
//                                          "QPushButton:hover{background-color:rgb(135,206,250); color: black;}"
//                                          "QPushButton:pressed{background-color:rgb(135,196,240);border-style: inset;}");this->ui->pushButton_3->setStyleSheet("QPushButton{background-color: rgb(225, 225, 225);border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(255,182,193); color: black;}""QPushButton:pressed{background-color:rgb(255,152,183);border-style: inset;}");this->ui->pushButton_4->setStyleSheet("QPushButton{background-color: rgb(225, 225, 225);border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(144,238,144); color: black;}""QPushButton:pressed{background-color:rgb(144,218,134);border-style: inset;}");QPalette palette = this->palette();palette.setColor(QPalette::Window,QColor(255,255,240));palette.setColor(QPalette::ButtonText,QColor(0,0,0));setPalette(palette);
}ColorDlg::~ColorDlg()
{delete ui;
}void ColorDlg::on_pushButton_clicked()
{QColor color = QColorDialog::getColor(Qt::red,this,QString::fromLocal8Bit("颜色对话框"));if(color.isValid()){color1 = color;QRgb r_rgb = color.rgb();QString s_Rgb = QString::number(r_rgb,16);QString sheet = QString("QPushButton{background-color: #%1;border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(255,236,139); color: black;}""QPushButton:pressed{background-color:rgb(255, 210, 139);border-style: inset;}").arg(s_Rgb);this->ui->pushButton->setStyleSheet(sheet);}
}void ColorDlg::on_pushButton_3_clicked()
{QColor color = QColorDialog::getColor(Qt::red,this,QString::fromLocal8Bit("颜色对话框"));if(color.isValid()){color2 = color;QRgb r_rgb = color.rgb();QString s_Rgb = QString::number(r_rgb,16);QString sheet = QString("QPushButton{background-color: #%1;border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(255,182,193); color: black;}""QPushButton:pressed{background-color:rgb(255,152,183);border-style: inset;}").arg(s_Rgb);this->ui->pushButton_3->setStyleSheet(sheet);}
}//void ColorDlg::on_pushButton_2_clicked()
//{
//    QColor color = QColorDialog::getColor(Qt::red,this,QString::fromLocal8Bit("颜色对话框"));
//    if(color.isValid())
//    {
//        color3 = color;
//        QRgb r_rgb = color.rgb();
//        QString s_Rgb = QString::number(r_rgb,16);//        QString sheet = QString("QPushButton{background-color: #%1;border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}"
//                                "QPushButton:hover{background-color:rgb(135,206,250); color: black;}"
//                                "QPushButton:pressed{background-color:rgb(135,196,240);border-style: inset;}").arg(s_Rgb);
//        this->ui->pushButton_2->setStyleSheet(sheet);
//    }
//}void ColorDlg::on_pushButton_4_clicked()
{QColor color = QColorDialog::getColor(Qt::red,this,QString::fromLocal8Bit("颜色对话框"));if(color.isValid()){color4 = color;QRgb r_rgb = color.rgb();QString s_Rgb = QString::number(r_rgb,16);QString sheet = QString("QPushButton{background-color: #%1;border:1px groove gray;border-radius:4px;padding:1px 4px;border-style: outset;}""QPushButton:hover{background-color:rgb(144,238,144); color: black;}""QPushButton:pressed{background-color:rgb(144,218,134);border-style: inset;}").arg(s_Rgb);this->ui->pushButton_4->setStyleSheet(sheet);}
}void ColorDlg::on_pushButton_5_clicked()
{QDialog::reject();
}void ColorDlg::on_pushButton_6_clicked()
{QColor color;color1 = color;color2 = color;color3 = color;color4 = color;QDialog::reject();
}

项目下载 : Qt仿windows10记事本-C++代码类资源-CSDN下载

天灰灰会不会,让我忘了你是谁 《世界末日》

这篇关于Qt仿制Windows10记事本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833762

相关文章

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Qt实现文件的压缩和解压缩操作

《Qt实现文件的压缩和解压缩操作》这篇文章主要为大家详细介绍了如何使用Qt库中的QZipReader和QZipWriter实现文件的压缩和解压缩功能,文中的示例代码简洁易懂,需要的可以参考一下... 目录一、实现方式二、具体步骤1、在.pro文件中添加模块gui-private2、通过QObject方式创建

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是