qt学习记录day1

关于qt语言,20年那会看过一下网上的资料,什么也没有做,就这么放下了,22年4月份的时候写了几个demo,主要也就是关于信号和槽的,然后又放下了。趁现在不忙,赶紧捡起来看看。先复习一下信号和槽的吧。关于信号和槽,有过winform开发经验的小伙伴看一眼就能明白,这不就是事件和处理事件的函数吗。其实可以这么理解,信号就是发出通知的事件,槽就是事件触发的函数。

来个具体实例看一下。PushButton按钮,在界面转到槽,是不是有winform开发的感觉了

通过ui设计转到槽之后,会在头文件里面多出来一个槽声明

private slots:
    void on_pushButton_clicked();

在主函数下面会出现槽函数,现在在槽函数里面添加一个弹出框,然后触发一下槽函数

void MainWindow::on_pushButton_clicked()
{
    QMessageBox message(QMessageBox::NoIcon, "Title", "Hello QT");
    ;
    message.exec();
}

运行上面代码会出现一个弹出框,上面的槽函数是由系统自带的clicked()信号所触发。

如何改变控件的样式,一共有三种办法,第一种直接在ui上面改变样式表

第二种通过代码设置 ui->pushButton->setStyleSheet("background-color: rgb(255, 170, 127);");

第三种通过qss文件,跟web开发的css文档一模一样,也是元素选择器,id选择器,属性选择器之类的,首先创建一个不带bom的本地文件。如果带bom的文本文件,就会报错或者加载不出来。

创建一个qt的资源文件,将创建的qss文件导入qt资源文件,其实这种办法和第二种方法是一样的,就是打开文件夹,将qss文件读取出来,然后在执行第二种方法

#pushButton{
background-color: rgb(255, 170, 127)
}

 QString qss;
     QFile qssFile("D:\\Project\\Qt\\Qpainter\\sheet.qss");
     qssFile.open(QFile::ReadOnly);
     if(qssFile.isOpen())
     {
         qss=QLatin1String(qssFile.readAll());
         qDebug()<<qss;
         this->setStyleSheet(qss);
         qssFile.close();
     }

qt绘图和winform的绘图差不多,winform绘图其底层原理是调用win32的gdi,qt应该也相似吧,使用qt绘图,首先要在头文件里面添加QPaintEvent的引用,然后添加一个内置的方法。

protected:
    void paintEvent(QPaintEvent *Event) override;

然后在函数里卖弄实现paintEvent

void MainWindow::paintEvent(QPaintEvent *Event){
    QPainter painter(this);
    painter.save();
    painter.setPen(Qt::red);
    painter.drawPoint(20,20);
    painter.restore();
}

猜你喜欢

转载自blog.csdn.net/qq_40098572/article/details/128925818