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());
    });
    ```
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章