【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>

 

posted @ 2015-12-28 15:37  会飞的鱼鱼鱼  阅读(1891)  评论(0编辑  收藏  举报