Qt学习(二)数据输入输出,QSlider, QScrollBar, QTime, QDate, QDtateTime,QListWidget,QToolBox, QSpliter

一 数据转换

1.1 字符串和数字之间相互转换

    QString str = "128.5";
    bool ret;
    int number = str.toUInt(&ret);
    if(ret){
        qDebug() << number;
    }else
    {
        qDebug() << "falied";
    }

    int temp = 128;
    QString str1 = QString::number(temp,'f',2);
    qDebug() << str1;


    float num = 123.456;
    QString str2 = QString::asprintf("%.2f",num);
    qDebug() << str2;

    int num2 = 123;
    QString  str3 = QString::number(num2,2);
    qDebug() << "2进制转换结果: " << str3;

在这里插入图片描述

1.2 数据转换练习

  • 知识点复习:当前案例并没有进行手动的信号与槽的关联,但是为什么能正常运行,通过on_pushButtonCount_clickedon_pushButtonTen_clicked等槽函数自动进行关联的,信号发送者pushButtonCount ,槽函数名称clicked,QT会根据slots进行命名解析,也即QT的自动关联是通过函数命名来实现的

在这里插入图片描述

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    void on_pushButtonCount_clicked();

    void on_pushButtonTen_clicked();

    void on_pushButtonTwo_clicked();

    void on_pushButtonSixty_clicked();

private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}
void Dialog::on_pushButtonCount_clicked()
{
    float number = ui->lineEdit_number->text().toFloat();
    float price = ui->lineEdit_price->text().toFloat();
    QString value = QString::number(number * price);
    ui->lineEdit_totalPrice->setText(value);
}

void Dialog::on_pushButtonTen_clicked()
{
    int value10 = ui->lineEdit_ten->text().toInt();
    QString value2 = QString::number(value10,2);
    QString value16 = QString::number(value10,16);
    ui->lineEdit_two->setText(value2);
    ui->lineEdit_sixty->setText(value16);
}

void Dialog::on_pushButtonTwo_clicked()
{
    bool ok;
    int value2 = ui->lineEdit_two ->text().toInt(&ok,2);
    QString value10 = QString::number(value2);
    QString value16 = QString::number(value2,16);
    ui->lineEdit_ten->setText(value10);
    ui->lineEdit_sixty->setText(value16);
}

void Dialog::on_pushButtonSixty_clicked()
{
    bool ok;
    int value16 = ui->lineEdit_sixty ->text().toInt(&ok,16);

    qDebug() << "ok : " << ok;
    QString value10 = QString::number(value16);
    QString value2 = QString::number(value16,2);
    ui->lineEdit_ten->setText(value10);
    ui->lineEdit_two->setText(value2);
}

1.3 在1.2基础上,实现显示框数据的可手动增长或减小数据

  • 知识点1:Spin Box只能输入整数,Double Spin Box只能输入浮点数,两者对应的头文件分别是#include <QSpinBox> #include <QDoubleSpinBox>
  • 知识点2:Spin BoxDouble Spin Box直接获取到的就是数据,不是字符串,不需要再用text().toInt进行数据转换,直接value()获取值即可
void Dialog::on_pushButtonCount_clicked()
{
    int number = ui->spinBoxNumber->value();
    float price = ui->doubleSpinBoxPrice->value();
    QString value = QString::number(number * price);
    ui->lineEdit_totalPrice->setText(value);
}

在这里插入图片描述

在这里插入图片描述

二 QSlider组件

在这里插入图片描述

  • 案例,实现滑动R,G,B,透明度四个进度条的值,来控制右侧的面版的颜色
  • 知识点:当前案例是通过四个条,也即四个信号公用一个自定义槽来实现的,这里使用了自定义槽,因此需要手动进行信号与槽的关联,自定的槽函数中实现基本功能,也即调色板控制,自定义的信号与槽的初始化函数中,同时实现四个信号与槽的关联
    在这里插入图片描述
    在这里插入图片描述
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    //三个信号公用一个自定义槽函数,自定义槽函数需要手动关联
    void on_horizontalSlider_valueChanged(int value);

private:
    Ui::Dialog *ui;

    void initConnect();
};
#endif // DIALOG_H

#include "dialog.h"
#include "ui_dialog.h"
#include <QSlider>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    initConnect();
}

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


void Dialog::on_horizontalSlider_valueChanged(int value){
    int redValue = ui->horizontalSliderRed->value();
    int greenValue = ui->horizontalSliderGreen->value();
    int blueValue = ui->horizontalSliderBlue->value();
    int tmdValue = ui->horizontalSliderTMD->value();

    QColor color = QColor::fromRgb(redValue,greenValue,blueValue,tmdValue);

    auto pal = ui->textEdit->palette();
    pal.setColor(QPalette::Base, color);
    ui->textEdit->setPalette(pal);
}

void Dialog::initConnect()
{
    connect(ui->horizontalSliderRed,SIGNAL(valueChanged(int)),this, SLOT(on_horizontalSlider_valueChanged(int)));
    connect(ui->horizontalSliderGreen,SIGNAL(valueChanged(int)),this, SLOT(on_horizontalSlider_valueChanged(int)));
    connect(ui->horizontalSliderBlue,SIGNAL(valueChanged(int)),this, SLOT(on_horizontalSlider_valueChanged(int)));
    connect(ui->horizontalSliderTMD,SIGNAL(valueChanged(int)),this, SLOT(on_horizontalSlider_valueChanged(int)));
}

三 QScrollBar组件

  • 通过滑动条控制字体的大小的改变
  • 知识点:当前也是不需要手动关联信号与槽的案例,自动通过槽函数名on_horizontalScrollBar_valueChanged完成了关联

在这里插入图片描述
在这里插入图片描述

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    void on_horizontalScrollBar_valueChanged(int value);

private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H
void Dialog::on_horizontalScrollBar_valueChanged(int value)
{
    //选择所有文本
    ui->textEdit->selectAll();
    //根据滑动条的滚动来增加或减小字体大小
    ui->textEdit->setFontPointSize(value);
}

四 QDial表盘控件

  • 表盘
    在这里插入图片描述
  • 进度条
  • 在这里插入图片描述
    在这里插入图片描述
void Dialog::on_dial_valueChanged(int value)
{
    控制标签上的显示
    ui->label->setText(QString::asprintf("%d kM/H",value));
    
    控制进度条的显示
    ui->progressBar->setValue(value);
}

在这里插入图片描述
在这里插入图片描述

五 LCD显示

在这里插入图片描述

void Dialog::on_dial_valueChanged(int value)
{
    ui->lcdNumber->display(value);
}

void Dialog::on_radioButton2_clicked()
{
    控制LED组件显示的位数
    ui->lcdNumber->setDigitCount(8);

    控制LCD组件显示数字的进制
    ui->lcdNumber->setMode(QLCDNumber::Bin);
}

在这里插入图片描述

六 QTime 时间

6.1 时间

    //创建时间
    QTime time1(23,59,59,599);
    qDebug() << time1;

    //获取当前时间
    QTime time2 = QTime::currentTime();
    qDebug() << time2;

    //时间的计算
    int hour = time2.hour();
    int minite = time2.minute();
    int s = time2.second();
    int ms = time2.msec();
    qDebug() << hour << ":" << minite << ":" << s  << ":" << ms;

    QTime time3 =time2.addSecs(850);
    qDebug() <<time3;


    //计算时间间隔
    QTime time4(23,30,00);
    int num = time2.secsTo(time4); //time2+ = time4
    qDebug() <<time4;

    //字符串转时间
    QTime time5 = QTime::fromString("23:58:59");
    qDebug() <<time5;

    QString str = "19点48分";
    QTime time6 = QTime::fromString(str,"H点m分");
    qDebug() <<time6;

    str = "6:08:9";
    QTime time7 = QTime::fromString(str,"h:mm:s");
    qDebug() <<time7;

    //时间转字符串
    QTime time8 = QTime::currentTime();
    str = time8.toString();
    qDebug() <<str;

6.2 日期

    //设置日期
    QDate date(2024,2,28);
    //获取当前日期
    QDate data2 = QDate::currentDate();
    qDebug() << date;

    int year = data2.year();
    int month = data2.month();
    int day = data2.day();


    qDebug() << data2.dayOfYear();  //这一年的第几天
    qDebug() << data2.dayOfWeek();  //这一周的第几天
    qDebug() << data2.weekNumber();
    qDebug() <<data2.isValid();
    
    QDate data3 = data2.addDays(100);
    
    int num = data2.daysTo(data3); data2+? = data3;

    //字符串转日期
    QString str = "2024年2月23日";
    QDate date= QDate::fromString(str,"yyyy-M-dd");
    qDebug() << date;

    //日期转字符串
    QDate date2 = QDate::currentDate();
    str = date2.toString();
    qDebug() << str;



    QDateTime datatime2;
    datatime2.setDate(date);

    QTime time(20,53);
    datatime2.setTime(time);

    QDateTime dataTime3 = QDateTime::currentDateTime();
    qDebug() << dataTime3;

在这里插入图片描述

6.3 QTime, QDate, QDtateTime

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    void on_pushButton_clicked();
    void on_spinBoxContinue_valueChanged(int arg1);
    void on_pushButtonData_clicked();
    void on_spinBoxContinueData_valueChanged(int arg1);
    void on_pushButtonDataTime_clicked();
    void on_spinBoxContinueDataTime_valueChanged(int arg1);
private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

#include "dialog.h"
#include "ui_dialog.h"
#include <QTime>
#include <QDebug>
#include <QDate>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

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

void Dialog::on_pushButton_clicked()
{
    ui->timeEditBegin->setTime(QTime::currentTime());
}
void Dialog::on_spinBoxContinue_valueChanged(int arg1)
{
    QTime time = ui->timeEditBegin->time();
    QTime time2 = time.addSecs(arg1*3600);
    ui->timeEditEnd->setTime(time2);
}

void Dialog::on_pushButtonData_clicked()
{
    ui->dateEditStart->setDate(QDate::currentDate());
}
void Dialog::on_spinBoxContinueData_valueChanged(int arg1)
{
    QDate date = ui->dateEditStart->date();
    QDate date2 = date.addDays(arg1);
    ui->dateEditEnd->setDate(date2);
}

void Dialog::on_pushButtonDataTime_clicked()
{
    ui->dateEditStartDaretime->setDateTime(QDateTime::currentDateTime());
}

void Dialog::on_spinBoxContinueDataTime_valueChanged(int arg1)
{
    QDateTime date = ui->dateEditStartDaretime->dateTime();
    QDateTime date2 = date.addDays(arg1);
    ui->dateEditEndDatetime->setDateTime(date2);
}

七 QListWidget 时间

  • 该组件的作用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 对应组件在软件中的名字
    在这里插入图片描述
  • 案例
  • 知识点1:如何实现鼠标右键单击,显示红色圈所示的选项:首先在界面初始化函数,当前是initUI()函数实现中,添加代码 ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu); 然后在设计界面,点击如下红色圈圈出的空白处,转到槽,选择如下所示槽函数,在槽函数中实现如下代码
    QMenu *menu = new QMenu(this);
    menu->addAction(ui->actionMode);
    menu->addSeparator(); //添加分割线
    menu->addAction(ui->actionList);
    menu->addAction(ui->actionDelete);
    menu->addAction(ui->actionSeleteAll);
    menu->addAction(ui->actionSeleteRverse);

    menu->exec(QCursor::pos()); //执行

    delete menu;

在这里插入图片描述
在这里插入图片描述

  • 知识点2: 使得listWidget里面的图标能够自适应大小,实现换行,在initUI()函数中,添加 ui->listWidget->setResizeMode(QListView::Adjust);
  • 知识点3:这一行使得图标前面有复选框 // item->setCheckState(Qt::Unchecked);
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void on_actionMode_triggered();
    void on_actionList_triggered();
    void on_pushButton_clicked();
    void on_actionDelete_triggered();
    void on_actionSeleteAll_triggered();
    void on_actionSeleteRverse_triggered();
    void on_listWidget_customContextMenuRequested(const QPoint &pos);
private:
    Ui::MainWindow *ui;
    void initUI();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initUI();
}

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

void MainWindow::initUI()
{
    //向listWidget中添加item
    ui->listWidget->clear();
    QStringList itemName = {"C语言", "C++","QT","java","matlab"};

    QIcon icon;
    icon.addFile(":/images/class.png");

//    if (icon.isNull()) {
//        // 图标加载失败,路径可能无效
//        qDebug() << "Failed to load icon: invalid path or file format.";
//    } else {
//        qDebug() << "图标加载成功" ;
//    }

    //设置文字大小
    QFont font = ui->listWidget->font();
    font.setPixelSize(30);
    ui->listWidget->setFont(font);

    //设置图标大小
    ui->listWidget->setIconSize(QSize(30,30));

    //使得listWidget里面的图标能够自适应大小,实现换行
    ui->listWidget->setResizeMode(QListView::Adjust);

    for(int i = 0; i < itemName.count(); i++){
        QListWidgetItem *item = new QListWidgetItem();
        item->setText(itemName[i]);

        //这一行使得图标前面有复选框
        item->setCheckState(Qt::Unchecked);
        item->setIcon(icon);
        ui->listWidget->addItem(item);
    }

    ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
}

void MainWindow::on_actionMode_triggered()
{
    ui->listWidget->setViewMode(QListView::IconMode);
    ui->listWidget->setSpacing(30);
}

void MainWindow::on_actionList_triggered()
{
   // qDebug() << "函数调用";
    ui->listWidget->setViewMode(QListView::ListMode);
    ui->listWidget->setSpacing(10);
}

void MainWindow::on_pushButton_clicked()
{
    if(ui->lineEdit->text().trimmed().length() >0){
        auto item = new QListWidgetItem();
        item->setText(ui->lineEdit->text().trimmed());

        QIcon icon;
        icon.addFile(":/images/class.png");
        item->setIcon(icon);
        item->setCheckState(Qt::Unchecked);
        ui->listWidget->addItem(item);
    }
}

void MainWindow::on_actionDelete_triggered()
{
    int count = ui->listWidget->count();
    for(int i = count-1; i >=0 ; i--)
    {
        if(ui->listWidget->item(i)->checkState() == Qt::Checked){
            auto item = ui->listWidget->takeItem(i);
            delete item;
        }
    }
}

void MainWindow::on_actionSeleteAll_triggered()
{
    int count = ui->listWidget->count();
    for(int i = count-1; i >=0 ; i--)
    {
         ui->listWidget->item(i)->setCheckState(Qt::Checked);
    }
}

void MainWindow::on_actionSeleteRverse_triggered()
{
    int count = ui->listWidget->count();
    for(int i = count-1; i >=0 ; i--)
    {
        if(ui->listWidget->item(i)->checkState() == Qt::Checked){
            ui->listWidget->item(i)->setCheckState(Qt::Unchecked);
        }else
        {
            ui->listWidget->item(i)->setCheckState(Qt::Checked);
        }

    }
}

void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
    QMenu *menu = new QMenu(this);
    menu->addAction(ui->actionMode);
    menu->addSeparator(); //添加分割线
    menu->addAction(ui->actionList);
    menu->addAction(ui->actionDelete);
    menu->addAction(ui->actionSeleteAll);
    menu->addAction(ui->actionSeleteRverse);

    menu->exec(QCursor::pos()); //执行

    delete menu;
}

效果:
在这里插入图片描述

八 QToolbar

在这里插入图片描述

  • 功能演示:在七的基础上,添加如下功能
    在这里插入图片描述
  • 对应代码:添加相应的tool button之后, 在initUI()函数中直接添加如下代码
    //使用QToolButton 设置按钮菜单
    QMenu *menu = new QMenu(this);
    menu->addAction(ui->actionMode);
    menu->addAction(ui->actionList);
    menu->addAction(ui->actionDelete);
    menu->addAction(ui->actionSeleteAll);
    menu->addAction(ui->actionSeleteRverse);
    ui->toolButton->setPopupMode(QToolButton::InstantPopup); //按下按钮立刻反馈
    ui->toolButton->setDefaultAction(ui->actionMode); //设置默认是什么选项
    ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    ui->toolButton->setMenu(menu);

九. 如何添加资源文件到Qt程序,例如如何将图片库导入QT程序

在这里插入图片描述
在这里插入图片描述
出现如下界面
在这里插入图片描述

  • 点击如下add Prefix,修改前缀如下
    在这里插入图片描述
  • 点击add files ,全选要用的图片,导入

在这里插入图片描述
在这里插入图片描述

  • 选中自己的左侧的图片文件,当前案例是images.qrc,然后邮件,选择open with->资源管理器-> save all,就可以在左侧的文件下看到所有图片
    在这里插入图片描述

十 如何用action快捷的创建菜单栏

  • 进入设计模式,点击红色箭头所指位置添加action,然后回出现一个弹框,在弹框内进行相应的内容编辑,选择红色箭头所指位置,进行图标选择,确定之后,依次添加完如下所示的action,可编辑框的左上角的“编辑”是手动输入的,然后将菜单栏中的相应的按钮拖入该选项中即可
    在这里插入图片描述
    在这里插入图片描述

  • 如何在菜单栏下添加相应的图标,点击右侧的主窗口->添加工具栏,右侧会生成toolbar按钮,左侧编辑框上方会产生一条线,此时可以直接将action拖入线中,生成图标
    在这里插入图片描述
    在这里插入图片描述

  • 选中toolbar,可以对图标显示进行编辑,选择文字在图片下方
    在这里插入图片描述

十一 如何自定义界面类

  • 欲实现如下功能,QT默认的图片显示是,图片+文字描述,现在希望实现多一行的文字描述
    在这里插入图片描述在这里插入图片描述

  • 先正常创建一个QT项目,然后再执行如下操作,创建一个QT设计师面类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 设计类创建完毕后,选中新生成的ui界面,进行界面设计
    在这里插入图片描述
    在这里插入图片描述

  • 在.h文件中,添加函数接口
    在这里插入图片描述

  • .cpp中完成类的实现,而不是转到槽做实现
    在这里插入图片描述

  • 效果
    在这里插入图片描述

  • myqqinfo.h

#ifndef MYQQINFO_H
#define MYQQINFO_H

#include <QWidget>

namespace Ui {
class MyQQinfo;
}

class MyQQinfo : public QWidget
{
    Q_OBJECT

public:
    explicit MyQQinfo(QWidget *parent = nullptr);
    ~MyQQinfo();
    void setHeadImage(QString imgFile);
    void setNickName(QString name);
    void setInfo(QString info);

private:
    Ui::MyQQinfo *ui;
};

#endif // MYQQINFO_H

  • myqqinfo.cpp
#include "myqqinfo.h"
#include "ui_myqqinfo.h"
#include <QPixmap>
MyQQinfo::MyQQinfo(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyQQinfo)
{
    ui->setupUi(this);
}

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

void MyQQinfo::setHeadImage(QString imgFile)
{
    ui->labelHead->setPixmap(QPixmap(imgFile).scaled(120,120));
}

void MyQQinfo::setNickName(QString name)
{
    ui->labelNick->setText(name);
}

void MyQQinfo::setInfo(QString info)
{
    ui->labelInfo->setText(info);
}
  • mainwindow.cpp,余下文件没有做修改
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myqqinfo.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    MyQQinfo *info = new MyQQinfo(this);
    info->setHeadImage(":/images/song.png");
    info->setInfo("好好学习,天天向上");
    info->setNickName("Rook");
    info->setGeometry(10,10,400,120);


    info = new MyQQinfo(this);
    info->setHeadImage(":/images/tang.png");
    info->setInfo("good good");
    info->setNickName("Jack");
    info->setGeometry(10,150,400,120);
}

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

  • 如何调用自定义界面,见十二

十二 QToolBox

  • 知识点:如何调用自定义界面,当前案例是在QListWidget组件中调用自定义界面。可以总结为,直接在Qt项目中创建一个新的设计师类,在类中进行界面的设计,然后当成常规组件进行调用
    for(int i = 0; i <10; i++){
        QListWidgetItem *item = new QListWidgetItem();
//        item->setText("好友"+QString::number(i+1));
//        item->setIcon(icon);
        item->setSizeHint(QSize(600,120));
        listwidget->addItem(item);

        MyQQinfo *info = new MyQQinfo(this);
        info->setHeadImage(":/images/song.png");
        info->setInfo("好好学习,天天向上");
        info->setNickName("好友"+QString::number(i+1));

        listwidget->setItemWidget(item,info);
    }

在这里插入图片描述

  • 实现效果

在这里插入图片描述
在这里插入图片描述

  • 当前案例将 十一 案例中的文件直接添加到了当前文件中进行调用
    在这里插入图片描述

  • dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
#include <QListWidget>
#include <QDebug>
#include "myqqinfo.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    initUI();
}

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

void Dialog::initUI()
{
    //移除设计器中toolBox成员
    for(int i = ui->toolBox->count()-1; i >=0; i--){
        ui->toolBox->removeItem(i);
    }

   //添加好友分组
   //QListWidget list模式
    QListWidget *listwidget = new QListWidget();
    listwidget->setIconSize(QSize(48,48));
    QIcon icon;
    icon.addFile(":/images/song.png");
    for(int i = 0; i <10; i++){
        QListWidgetItem *item = new QListWidgetItem();
//        item->setText("好友"+QString::number(i+1));
//        item->setIcon(icon);
        item->setSizeHint(QSize(600,120));
        listwidget->addItem(item);

        MyQQinfo *info = new MyQQinfo(this);
        info->setHeadImage(":/images/song.png");
        info->setInfo("好好学习,天天向上");
        info->setNickName("好友"+QString::number(i+1));

        listwidget->setItemWidget(item,info);
    }
    ui->toolBox->addItem(listwidget,"我的好友");




    listwidget = new QListWidget();
    listwidget->setIconSize(QSize(48,48));
    for(int i = 0; i <10; i++){
        QListWidgetItem *item = new QListWidgetItem();
        item->setText("同学"+QString::number(i+1));
        item->setIcon(icon);
        item->setSizeHint(QSize(200,60));
        listwidget->addItem(item);
    }
    ui->toolBox->addItem(listwidget,"我的同学");




    listwidget = new QListWidget();
    listwidget->setIconSize(QSize(48,48));
    for(int i = 0; i <10; i++){
        QListWidgetItem *item = new QListWidgetItem();
        item->setText("黑名单"+QString::number(i+1));
        item->setIcon(icon);
        item->setSizeHint(QSize(200,60));
        listwidget->addItem(item);
    }
    ui->toolBox->addItem(listwidget,"黑名单");

}

十三 QSpliter

  • 分割按钮如下所示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 使用水平分割之后的效果如下
    在这里插入图片描述

  • 但是没有居中,在Qt构造函数中添加一行代码,setCentralWidget(ui->splitter);

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setCentralWidget(ui->splitter);
}

在这里插入图片描述

十四 QPlainTextEidt 和 QTextEdidt

  • QPlainTextEidt 类似于记事本,纯文本编辑,QTextEdidt可以插入图片
    //打开一个文件选择器
    QString filename = QFileDialog::getOpenFileName(this,"选择本地图片");
    QString str = QString::asprintf("<img src=%s>", filename.toStdString().c_str());
    ui->textEdit->insertHtml(str);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值