zoukankan      html  css  js  c++  java
  • 【QT相关】类头文件解读、QT编辑模式、读取text文本

    Wizard产生的头文件类包含了必须的#include文件、构造函数、析构函数和UI对象:

    1. #include <QMainWindow>
    2. namespace Ui {class Notepad;}
    3. class Notepad : public QMainWindow
    4. {
    5. Q_OBJECT
    6. public:
    7. explicit Notepad(QWidget *parent = 0);
    8. ~Notepad();
    9. private:
    10. Ui::Notepad *ui;
    11. };

    解释如下:

    行4提供了主应用窗口;

    行6声明Notepad类在Ui命名空间内(Ui命名空间是由uic tool产生的、用于所有后缀为.ui的文件对应的UI类的标准命名空间)。

    行10包括一个宏定义Q_OBJECT,必须在类定义的第一个,声明这个类是QObject。他也需要从QObject继承。QObject给一般C++类添加几个能力。注意:类名和槽名必须在运行时确定。查询一个槽的参数类型然后驱动他也是可行的。

    行15声明构造函数,默认参数parent,值为0表示这个控件没有父控件(是顶层控件)。

    行16为虚的析构函数,用于释放在其生命期间该对象获得的所有资源。根据C++命名规则,析构函数和它对应的类名相同,前缀为~。在QObject中,析构函数是虚函数保证了当一个对象以“a pointer-to-base-class”方式删除时,继承类的析构函数可以恰当析构。

    行19声明一个成员变量,是指向Notepad类的指针。成员变量和特定类关联,可以访问其所有的成员方法。


    QT编辑模式:

    • 默认模式F3——控件模式;
    • 信号与槽模式F4;
    • Buddy编辑模式:帮助label控件正确处理键盘聚焦;
    • Tab顺序编辑模式:设置控件接收键盘聚焦顺序。

    使用QFile表示Text文本,用QTextStream读取,并用QTextEdit::setPlainText()将其展示在textEdit上:

    void loadTextFile() {
        QFile inputFile(":/input.txt");
        inputFile.open(QIODevice::ReadOnly);
    
        QTextStream in(&inputFile);
        QString line = in.readAll();
        inputFile.close();
    
        ui->textEdit->setPlainText(line);
      //设置cursor
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1); 
    }

    上述代码需要包括头文件:

    #include <QFile>
    #include <QTextStream>
  • 相关阅读:
    MySql学习2
    Java学习:JDBC
    MySql学习
    Java学习:网络编程
    Java学习:反射
    Java学习:多线程(2)
    Java学习:多线程
    .net后台webclient用post方式发送文件和数据
    实用
    day&day
  • 原文地址:https://www.cnblogs.com/imagezy/p/5082758.html
Copyright © 2011-2022 走看看