qt_傳智播客_3

樹控件

在這裏插入圖片描述


    //設置水平頭部
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹");

    QTreeWidgetItem * item1 = new QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * item2 = new QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * item3 = new QTreeWidgetItem(QStringList()<<"智力");

    ui->treeWidget->addTopLevelItem(item1);
    ui->treeWidget->addTopLevelItem(item2);
    ui->treeWidget->addTopLevelItem(item3);


    QTreeWidgetItem * ll = new QTreeWidgetItem(QStringList()<<"斧王"<<"前排坦克,能承受傷害");

    item1->addChild(ll);

列表控件

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->tableWidget->setColumnCount(3);

    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性別"<<"年齡");

    ui->tableWidget->setRowCount(5);

    ui->tableWidget->setItem(0,0,new QTableWidgetItem("Asia"));
}

MainWindow::~MainWindow()
{
    delete ui;
}


鼠標事件

進入離開事件

鼠標事件的添加:
創建一個新的類,這個類僅僅用於控件和事件的關聯,所以用普通類即可

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QLabel>

class myLabel : public QLabel
{
    Q_OBJECT
public:
    explicit myLabel(QWidget *parent = nullptr);

    void enterEvent(QEvent *event);

    void leaveEvent(QEvent *event);

signals:

};

#endif // MYLABEL_H
#include "mylabel.h"
#include<QDebug>
#include <iostream>

myLabel::myLabel(QWidget *parent) : QLabel(parent)
{

}

void myLabel::enterEvent(QEvent *event){
    qDebug()<<"mouse coming in";
}

void myLabel::leaveEvent(QEvent *event){
    qDebug()<<"mouse coming out";
}

在窗口中提升控件即可將事件和控件關聯
在這裏插入圖片描述

按下釋放事件

mousePressEvent();
mouseReleaseEvent();
mouseMoveEvent();

判斷左右按鍵

ev->buttons()用&操作符

鏈式格式化字符串添加

QString str = QString("鼠標按下了 x= %1 y = %2").arg(ev->x()).arg(ev->y());

出現“常量中有換行符”時的解決辦法

改變編碼方式

定時器

利用事件 timerEvent(QTimerEvent * ev);
啓動定時器startTimer(1000)
timerEvent的返回值是定時器的唯一標識,可以與timerId作比較。

event 事件分發器

event 事件
5.1用途:用於事件的分發。
5.2也可以做攔載操作,不建議5.3 bool event(QEvent*;
5.4返回值如果是true代表用戶處理這個事件,不向下分發了
5.5使用type()方法可以得到各種枚舉值

eventfilter事件過濾器

事件過濾器
6.1
在程序將時間分發到事件分發器前,可以利用過濾器做攔載
6.2
步驟
6.2.1 1、給控件安裝事件過濾器
6.2.2 2、重寫eventFilter函數(obj,ev)

文件讀取

    //點擊選取文件的按鈕
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        
        QString path = QFileDialog::getOpenFileName(this,"打開文件","路徑");
        //將路徑放入lineEdit中
        ui->lineEdit->setText(path);
        //讀取內容放入textEdit中
        QFile file(path);//參數就是讀取文件的路徑
        //設置打開方式
        file.open(QIODevice::ReadOnly);
        //qtEXTcodec * codec = QTextCode::codecFroName("gbk");
        
        ui->textEdit->setText(file.readAll());
    });
    ```
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章