qt如何添加图片资源?qt怎么定义信号函数?

Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面程序,在实际开发中,很多企业也会使用qt进行项目开发,那qt如何添加图片资源?下面来我们就来给大家讲解一下。

1、在ui设计界面中添加label,用于显示图片

2、添加QT资源文件

往项目中添加新文件,选择QT分类中的资源文件,名称为"myImage",其他选项默认。

qt如何添加图片资源?qt怎么定义信号函数?.jpg

3、添加资源

在项目目录下新建文件夹"image",用于存放将要使用的图片文件。

在Qt Creator中,在资源管理器界面单击"添加"按钮,选择"添加前缀",然后将属性栏中的前缀改为"/myImage",再单击"添加"按钮,"添加文件",在弹出的对话框中选择image中的图片文件。

添加完成后myImage.qrc目录下会有已经添加完成的图片文件。

1.jpg

4、使用图片

在使用label显示的地方,添加相应的代码。

// logo图片的加载

QImage image(QString(":/image/sf.png"));

ui->label_logo->setPixmap(QPixmap::fromImage(image));

qt怎么定义信号函数?

信号函数指的是符合以下条件的函数:

定义在某个类中,该类直接或间接继承自 QObject 类;

用 signals 关键字修饰;

函数只需要声明,不需要定义(实现);

函数的返回值类型为 void,参数的类型和个数不限。

举个简单的例子:

class MyWidget: public QWidget
{
    //Q_OBJECT 是一个宏,添加它才能正常使用 Qt 的信号和槽机制
    Q_OBJECT
    //修饰信号函数的关键字
    signals:
        //自定义的信号函数
        void MySignal(QString message);
};

我们自定义了一个继承自 QWidget 的 MyWidget 类,QWidget 是 QObject 的子类,所以 MyWidget 间接继承自 QObject 类。MyWidget 类中自定义了名为 MySignal 的信号函数(可以简称 MySignal 信号),它用 signals 关键字修饰,没有返回值,也没有定义(实现),仅有 1 个参数。

对于 MySignal() 信号函数,程序中不会直接调用它,而是借助 connect() 连接某个槽函数,实现的语法格式是:

MyWidget myWidget;
QObject::connect(&myWidget,&MyWidget::MySignal,信号接收者,槽函数);

一旦确定了信号接收者和槽函数,当 MySignal 信号发出后,与之相连的槽函数就会执行。那么,程序中如何发出 MySignal 信号呢?

对于 Qt 提供给我们的信号函数,其底层已经设置好了信号发出的时机,例如按下鼠标时、点击 Enter 回车键时等等。对于自定义的信号,我们需要自己指定信号发出的时机,这就需要用到 emit 关键字。emit 中文意思为“发出、射出”,是 Qt 在 C++ 基础上扩展的一个关键字,专门用来发射信号。

以定义好的 MySignal 信号为例,修改 MyWidget 类为:

class MyWidget: public QWidget
{
    //Q_OBJECT 是一个宏,添加它才能正常使用 Qt 的信号和槽机制
    Q_OBJECT
    //自定义信号函数
    signals:
        void MySignal(QString mess);
    public:
        void emitSignal()
        {
            emit MySignal(message);
        }
    private:
        QString message;
};

我们为 MyWidget 类新增了一个 emitSignal() 方法和一个 message 属性,emitSignal() 方法中的emit MySignal(message);语句就表示发射 MySignal 信号。当程序中执行 emitSingal() 函数时,就会发出 MySignal 信号,message 属性的值也会随信号一同发出,对应的槽函数可以接收到 message 的值。

对于每一个自定义的信号函数,程序中都应该提供发射该信号的方法,而且这样的方法可以有多个。最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

qt中为啥创建不出resource?qt列表框怎么创建?

springboot怎么实现sendmail?实现流程介绍

springmvc怎么连接数据库?具体实操技巧