Qt MainWindow简单例子(文本编辑)

打印 上一主题 下一主题

主题 942|帖子 942|积分 2826

使用Qt控件练习文本编辑窗口的创建。
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QLabel>
  5. #include <QProgressBar>
  6. QT_BEGIN_NAMESPACE
  7. namespace Ui {
  8. class MainWindow;
  9. }
  10. QT_END_NAMESPACE
  11. class MainWindow : public QMainWindow
  12. {
  13.     Q_OBJECT
  14. private:
  15.     QLabel* m_labFile;
  16.     QProgressBar* m_proGressBar;
  17.     QLabel* m_labInfo;
  18. public:
  19.     MainWindow(QWidget *parent = nullptr);
  20.     ~MainWindow();
  21. private slots:
  22.     void on_actionFile_New_triggered();
  23.     void on_actionFile_Open_triggered();
  24.     void on_actionFile_Save_triggered();
  25.     void on_textEdit_copyAvailable(bool b);
  26.     void on_textEdit_selectionChanged();
  27.     void on_actionFont_Bold_triggered(bool checked);
  28.     void on_actionFont_Italic_triggered(bool checked);
  29.     void on_actionFont_UnderLine_triggered(bool checked);
  30.     void on_fontSize_changed(int fontSize);
  31.     void on_font_changed(QFont font);
  32. private:
  33.     Ui::MainWindow *ui;
  34. };
  35. #endif // MAINWINDOW_H
复制代码
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QActionGroup>
  4. #include <QSpinBox>
  5. #include <QFontComboBox>
  6. #include <QProgressBar>
  7. MainWindow::MainWindow(QWidget *parent)
  8.     : QMainWindow(parent)
  9.     , ui(new Ui::MainWindow)
  10. {
  11.     ui->setupUi(this);
  12.     QActionGroup* action_group = new QActionGroup(this);
  13.     action_group->addAction(ui->actionLang_Chinese);
  14.     action_group->addAction(ui->actionLang_English);
  15.     action_group->setExclusive(true);
  16.     QSpinBox* spinFontSize = new QSpinBox(this);
  17.     spinFontSize->setMaximum(50);
  18.     spinFontSize->setMinimum(5);
  19.     spinFontSize->setValue(ui->textEdit->font().pointSize());
  20.     spinFontSize->setMinimumWidth(50);
  21.     ui->toolBar->addWidget(spinFontSize);
  22.     QFontComboBox* comboFontBox = new QFontComboBox;
  23.     comboFontBox->setMinimumWidth(150);
  24.     comboFontBox->setFont(ui->textEdit->font());
  25.     ui->toolBar->addWidget(comboFontBox);
  26.     ui->toolBar->addSeparator();
  27.     ui->toolBar->addAction(ui->actionClose);
  28.     m_labFile = new QLabel(this);
  29.     m_labFile->setMinimumWidth(150);
  30.     m_labFile->setText("文件名: ");
  31.     ui->statusbar->addWidget(m_labFile);
  32.     m_proGressBar = new QProgressBar(this);
  33.     m_proGressBar->setMinimum(5);
  34.     m_proGressBar->setMaximum(50);
  35.     m_proGressBar->setValue(ui->textEdit->font().pointSize());
  36.     ui->statusbar->addWidget(m_proGressBar);
  37.     m_labInfo = new QLabel("PermanentWidget");
  38.     ui->statusbar->addPermanentWidget(m_labInfo);
  39.     connect(spinFontSize, &QSpinBox::valueChanged, this, &MainWindow::on_fontSize_changed);
  40.     connect(comboFontBox, &QFontComboBox::currentFontChanged, this, &::MainWindow::on_font_changed);
  41. }
  42. MainWindow::~MainWindow()
  43. {
  44.     delete ui;
  45. }
  46. void MainWindow::on_actionFile_New_triggered()
  47. {
  48.     ui->textEdit->clear();
  49.     ui->textEdit->document()->setModified(false);
  50.     m_labFile->setText("文件名:新建一个文件");
  51. }
  52. void MainWindow::on_actionFile_Open_triggered()
  53. {
  54.     m_labFile->setText("正在打开一个文件");
  55. }
  56. void MainWindow::on_actionFile_Save_triggered()
  57. {
  58.     ui->textEdit->document()->setModified(false);
  59.     m_labFile->setText("已经保存一个文件");
  60. }
  61. void MainWindow::on_textEdit_copyAvailable(bool b)
  62. {
  63.     ui->actionEdit_Copy->setEnabled(b);
  64.     ui->actionEdit_Cut->setEnabled(b);
  65.     ui->actionEdit_Paste->setEnabled(ui->textEdit->canPaste());
  66. }
  67. void MainWindow::on_textEdit_selectionChanged()
  68. {
  69.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  70.     ui->actionFont_Bold->setChecked(fmt.font().bold());
  71.     ui->actionFont_Italic->setChecked(fmt.font().italic());
  72.     ui->actionFont_UnderLine->setChecked(fmt.font().underline());
  73. }
  74. void MainWindow::on_actionFont_Bold_triggered(bool checked)
  75. {
  76.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  77.     if(checked)
  78.         fmt.setFontWeight(QFont::Bold);
  79.     else
  80.         fmt.setFontWeight(QFont::Normal);
  81.     //fmt.font().setBold(checked);
  82.     ui->textEdit->setCurrentCharFormat(fmt);
  83. }
  84. void MainWindow::on_actionFont_Italic_triggered(bool checked)
  85. {
  86.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  87.     // fmt.font().setItalic(checked);
  88.     fmt.setFontItalic(checked);
  89.     ui->textEdit->setCurrentCharFormat(fmt);
  90. }
  91. void MainWindow::on_actionFont_UnderLine_triggered(bool checked)
  92. {
  93.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  94.     // fmt.font().setUnderline(checked);
  95.     fmt.setFontUnderline(checked);
  96.     ui->textEdit->setCurrentCharFormat(fmt);
  97. }
  98. void MainWindow::on_fontSize_changed(int fontSize)
  99. {
  100.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  101.     fmt.setFontPointSize(fontSize);
  102.     ui->textEdit->setCurrentCharFormat(fmt);
  103.     m_proGressBar->setValue(fontSize);
  104. }
  105. void MainWindow::on_font_changed(QFont font)
  106. {
  107.     QTextCharFormat fmt = ui->textEdit->currentCharFormat();
  108.     fmt.setFont(font);
  109.     ui->textEdit->setCurrentCharFormat(fmt);
  110.     m_labInfo->setText("字体名称 " + font.family());
  111. }
复制代码
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5.     QApplication a(argc, argv);
  6.     MainWindow w;
  7.     w.show();
  8.     return a.exec();
  9. }
复制代码





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表