Newer
Older
AutomaticVerification / softwareDirectory / AutoVerScheme / testview.cpp
李现川 on 1 Mar 2024 4 KB 李现川 2024-3-1 17:50
#include "testview.h"
#include "ui_testview.h"
#include "QDialog"



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

    ui->textEdit->installEventFilter(this); //它负责在相应部件上安装事件过滤器

    thread=new mythread; //定义⼀个线程对象
    thread->setObjectName(QString("okk"));//设置线程对象的名字,注意在启动前设置
    connect(thread,&mythread::over,this,&TestView::start_two_tree);//连接槽函数

    //调色板
    //获取 pushButton 的调⾊板
    QPalette palette1 = ui->pushButton->palette();
    //设置按钮⽂本颜⾊为红⾊
    palette1.setColor(QPalette::ButtonText,Qt::red);
    //设置按钮背景⾊为绿⾊
    palette1.setColor(QPalette::Button,Qt::green);
    //pushButton 使⽤修改后的调⾊板
    ui->pushButton->setPalette(palette1);
    //设置 lineEdit 不可⽤
    ui->lineEdit->setDisabled(true);
    QPalette palette2 = ui->lineEdit->palette();
    //设置⾏编辑器不可⽤时的背景颜⾊为蓝⾊
    palette2.setColor(QPalette::Disabled,QPalette::Base,Qt::red);
    ui->lineEdit->setPalette(palette2);

    //设置背景图片
    //设置背景图标,但是不能让背景图⽚⾃适应
    QPalette pt=this->palette();
    QImage img(":/image/index/u15.png");
    QImage myimg=img.scaled(this->width(),this->height()); //设置⽐例
    pt.setBrush(QPalette::Window,QBrush(myimg)); //设置画笔
    this->setPalette(pt);

}

TestView::~TestView()
{
    delete ui;
}
void TestView::initForm()
{
    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    ui->horizontalLayout_2->addWidget(button1);
    ui->horizontalLayout_2->addWidget(button2);
    ui->horizontalLayout_2->setStretchFactor(button1,1);
   ui->horizontalLayout_2->setStretchFactor(button2,2);

   this->setWindowTitle("软件标题");
   this->setWindowFlags(Qt::WindowMaximizeButtonHint|Qt::WindowCloseButtonHint);
   this->setWindowFlag(Qt::CustomizeWindowHint,true);
   this->setWindowFlag(Qt::WindowSystemMenuHint,true);
}

void TestView::on_pushButton_clicked()
{
    QDialog dialog(this);
    QLabel* lb1 =new QLabel("kkkk",&dialog); //向对话框中添加内容
    dialog.exec();
}

void TestView::on_pushButton_6_clicked()
{
    QDialog *dialog =new QDialog(this); //在构造⽅法中创建⼀个⾮模态对话框
        dialog->show();
}


void TestView::keyPressEvent(QKeyEvent *ev)
{
    //重写键盘按下事件
     ui->label_5->clear();
     if(ev->key() == Qt::Key_0)
     {
         ui->label_5->setText("1被按下了");
         return;
     }else if(ev->key() == Qt::Key_Q)
         ui->label_5->setText("Q被按下了");

     QWidget::keyPressEvent(ev);

}
bool TestView::eventFilter(QObject *obj, QEvent *event) //此函数中实现事件过滤器。
{
    if(obj==ui->textEdit) //textEdit控件
    {
        if(event->type()==QEvent::Wheel)
        {
            QWheelEvent * w=static_cast<QWheelEvent*>(event);
            if(w->delta()>0)
                ui->label_5->setText(QString::number(count++));
            else
                  ui->label_5->setText(QString::number(count--));
            return true;
        }
        else
            return false;
    }
    else
        return QWidget::eventFilter(obj, event);
}
//主线程要调⽤的任务函数
void TestView::start_two_tree()
{
    //ui->label_5->setText(QString::number(QThread::currentThreadId()));

    for(int i=0; i<5;i++)
    {
        ui->label_5->setText("开始采摘第"+QString::number(i+1)+"苹果");
       // qDebug()<<"$$$$$$开始采摘第"<<i+1<<"苹果"<<endl;
        QThread::sleep(1);
    }
      ui->label_5->setText("采摘完成");
      //ui->label_5->setText(thread->objectName());

}

//⼦线程的任务函数 通过重新run虚函数实现
void mythread::run ()
{

  //  qDebug()<<"开始采摘苹果"<<QThread::currentThreadId()<<endl;
    for(int i=0; i<5;i++)
    {
      //  qDebug()<<"####开始采第"<<i+1<<"个苹果"<<endl;
        QThread::sleep(1);
    }
   // qDebug()<<"####采摘完成"<<endl;
    emit over(); //⼦线程向主线程发送⼀个信号
}