槽函数

作者: xqiiitan | 来源:发表于2025-04-26 10:42 被阅读0次

总结:
Qt程序的组成:应用程序类、窗口类。
查看类对应的模块:光标移动到类上 F1.
qmake += 模块的名称。

按钮操作

类名:QPushButton
设置内容:setText
移动按钮位置:move()
设置父窗口:setParent()
设置窗口大小:resize(), resizeFixed()

2.QT坐标系

坐标原点:左上角
x轴延伸的方向,向右递增;
y轴延伸的方向,向下递增。

2.信号和槽。

connect(Sender, &Sender::signal, Recv, Recv::slot)
发送信号的对象和处理槽函数的对象,两者是没有任何关系的两个对象。
参数1:信号发送者对象,类型:指针类型。
参数2:信号发出者发出的信号,类型:函数地址-》 &类名::信号名().
参数3:信号的接收对象(调用槽函数),类型:指针类型。
参数4:槽函数,信号接受者接收到信号后执行的动作,类型:函数地址-》 &类名::槽函数名()

eg:

class Me: public QObject {
    Q_OBJECT
    public:
        Me(QObject *parent=0);
        ~Me();
    signals:
        void seeBeauty();//看美女
        void molestBeauty();//调戏美女
        void writeLoveLetter(QString text);//写情书
        void weituoLoveLetter(QString text);//委托写情书
    public slots:
        void mouthWatering(); //流口水
}
class Beauty: public QObject {
    Q_OBJECT
    public:
        Beauty(QObject *parent=0);
        ~Beauty();
    signals:
        void sendLetter(QString text);//发信件,帮忙发送。
    public slots: //槽函数
        void mouthWatering();//流口水
        void beatSomebody(); //打人
        void answer();//回复-拒绝
        void answer(QString text);//回复-同意
}

Me wo;
Beauty sweet; //小紫
Beauty sweet2; //小红

//1.我看到美女后,我流口水。 自己发给自己信号,自己接收。
connect(&wo, &Me::seeBeauty, &wo, &Me::mouthWatering);
//2.我调戏美女,美女抽我。 我发信号,别人接收。
connect(&wo, &Me::molestBeauty, &sweet, &Beauty::beatSomebody);
//3.我给两个美女些情书,一个同意,一个拒绝。
//槽函数个数,< 信号的参数个数。
//3.1信号和槽重载的时候,需要使用函数指针。
//3.2同一个信号,可以发给多个槽函数。
void (Beauty::*slotAnser)() = &Beauty::answer; //函数指针1
connect(&wo, &Me::writeLoveLetter, &sweet, slotAnser);

void (Beauty::*slotAnser2)(QString) = &Beauty::answer; //函数指针2
connect(&wo, &Me::writeLoveLetter, &sweet2, slotAnser2);

//4.我拜托小红把情书交给他妹妹小紫,小紫说我喜欢会qt的程序员。
// 信号连接信号,间接传递。
connect(&wo, &Me::weituoLoveLetter, &sweet2, &Beauty::sendLetter);
// 小红sweet2, 将信件转给小紫sweet 进一步处理---回复。
connect(&sweet2, &Beauty::sendLetter, &sweet, slotAnser2);

相关文章

网友评论

      本文标题:槽函数

      本文链接:https://www.haomeiwen.com/subject/fgpwbjtx.html