Qt Creator实现滑块 进度条绑定

Qt 实现滑块 进度条绑定 背景颜色切换 设置进度条 打印进度条参数 打开文件等操作

显示图片 显示gif图片等功能
可能比较杂乱 上个图
在这里插入图片描述
首先添加资源文件
项目右键 Add New qt resource file 取个名字在这里插入图片描述
添加前缀 我这里前缀写的/
添加文件 把想要的文件添加进来 我添加的是一张图片 一张gif
在这里插入图片描述
从这个路径下可以直接取到资源 下面上一下代码 项目结构如下在这里插入图片描述
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include"QFileInfoList"
#include"QTreeWidgetItem"

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
     QFileInfoList  allfile(QTreeWidgetItem *root,QString path);
private slots:
     void on_openFile_clicked();
     void openfile();
void paintEvent(QPaintEvent *);
void on_btnchange_clicked();

void on_comboBox_activated(const QString &arg1);

void on_comboBox_activated(int index);

private:
    Ui::MainWindow *ui;

};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDebug"
#include"QTreeWidget"
#include"QDir"
#include"QDebug"
#include"QFileDialog"
#include"QListWidgetItem"
#include"QPainter"
#include"QMovie"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
        connect(ui->file, SIGNAL(clicked()), this, SLOT(openfile()));
    connect(ui->btnGet,&QPushButton::clicked,[=](){
      qDebug()<<ui->widget->getNum();
    });

    connect(ui->btnset,&QPushButton::clicked,[=](){
      ui->widget->serNum(50);
    });


    QMovie *movie=new QMovie(":/iamge/1122.gif");
    ui->lbm->setMovie(movie);
    movie->start();
//    QTreeWidgetItemIterator it(ui->treeWidget);
//        while (*it) {
//             //do something
//            qDebug()<<it.All;
//             (*it)->text(0);
//            ++it;
//}
}

//画一张图片
void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawLine(QPoint(0,0),QPoint(100,100));//画线
    painter.drawPixmap(100,100,QPixmap(":/iamge/11.jpg"));              //画一个图 资源文件里的
   // painter.drawPixmap(200,200,QPixmap(":/iamge/2222.jpg"));
    painter.save();
    painter.translate(200,100);
    painter.drawLine(QPoint(0,0),QPoint(50,50));
    painter.drawLine(QPoint(0,0),QPoint(100,70));
    painter.restore();//还原


    //背景设置成红色
//    painter.setPen(Qt::NoPen);
//     painter.setBrush(Qt::red);
//     painter.drawRect(rect());


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


void MainWindow::on_openFile_clicked()
{
    qDebug()<<"Hello Qt!";

    QString fileName = QFileDialog::getOpenFileName(this,tr("选择日志文件"),
                                                    "",tr("TXT(*.txt)")); //选择路径
    if (fileName.isEmpty())     //如果未选择文件便确认,即返回
        return;
    QFile file(fileName);
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        while (!file.atEnd())
        {
            QByteArray line = file.readLine();
            QString str(line);
            //m_requestLineEdit->setText(line);
             qDebug()<<"读取到的"+line;
        }


        file.close();
}
}

void MainWindow::openfile()
{
     qDebug()<<"openfile!";
     QString fileName = QFileDialog::getOpenFileName(this,"打开文件",
                                                     "",tr("all file(*);;TXT(*.txt*);;Images (*.png *.xpm *.jpg)")); //选择路径

     if (fileName.isEmpty())     //如果未选择文件便确认,即返回
         return;
     QFile file(fileName);
     if (file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
         while (!file.atEnd())
         {
             QByteArray line = file.readLine();
             QString str(line);
             //m_requestLineEdit->setText(line);
        ui->listWidget->addItem(str);
              qDebug()<<"读取到的"+line;
         }


         file.close();
}
}

void MainWindow::on_btnchange_clicked()
{
    setStyleSheet("QMainWindow {"
                     " color: rgb(85, 255, 255);"
                      "background-color :rgb(0, 255, 0);}"
                      );
}

void MainWindow::on_comboBox_activated(const QString &arg1)
{
    qDebug()<<arg1;
    //这里也可以用来修改背景颜色 我用的是下面方式 所以注释了
//    if(arg1=="blue"){

//        setStyleSheet("QMainWindow {"
//                          "background-color :rgb(0, 255, 255);}"
//                          );
//    }
}

void MainWindow::on_comboBox_activated(int index)
{
    qDebug()<<index; //返回序号
    switch(index){

    case 0  :
        setStyleSheet("QMainWindow {"
                          "background-color :rgb(0, 255, 255);}"
                          );
        break;
    case 1  :
        setStyleSheet("QMainWindow {"
                          "background-color :rgb(0, 255, 0);}"
                          );
        break;
    case 2  :
        setStyleSheet("QMainWindow {"
                          "background-color :rgb(255, 255, 0);}"
                          );
        break;
    }
}

smallwidget.h

#ifndef SAMLLWIDGET_H
#define SAMLLWIDGET_H

#include <QWidget>

namespace Ui {
class Samllwidget;
}

class Samllwidget : public QWidget
{
    Q_OBJECT

public:
    explicit Samllwidget(QWidget *parent = nullptr);
    ~Samllwidget();

    void serNum(int num); //这里拼错了 应该是set
    int getNum();
    void setProgressValue(int num);

private slots:
    void progress();


private:
    Ui::Samllwidget *ui;
    void openfile();

};

#endif // SAMLLWIDGET_H
samllwidget.cpp

#include "samllwidget.h"
#include "ui_samllwidget.h"

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

    void(QSpinBox:: * spSignal)(int) =&QSpinBox::valueChanged;//函数指针 消除函数重载


    //绑定spinBox 滑块 还要进度条
    connect(ui->spinBox,spSignal,ui->horizontalSlider,&QSlider::setValue);


    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
    connect(ui->spinBox,spSignal,[=](){
        ui->progressBar->setValue(ui->spinBox->value());
    });

}
//这里好像没用 我没删除 先放着
void Samllwidget::progress()
{
    //ui->progressBar->setValue(ui->spinBox->value());
}
Samllwidget::~Samllwidget()
{
    delete ui;
}

//下面就是一歇get/set
void Samllwidget::setProgressValue(int num)
{
   ui->progressBar->setValue(num/100);

}
void Samllwidget::serNum(int num)
{
        ui->spinBox->setValue(num);
}

int Samllwidget::getNum()
{
    return ui->spinBox->value();
}

还有个smallwidget里面的自定义控件讲解
创建一个smallwidget.ui
在这里插入图片描述
里面放这三个控件 在mainwindow.ui中添加一个widget 用来放这三个控件 右键提升窗口部件 输入类名称 我这里就是Samllwidget 最好去代码复制 免得出错
点击提升
在这里插入图片描述
这样就能显示在主窗口里了 可能讲的不够周到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值