`
qimo601
  • 浏览: 3449332 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Qt自定义槽和信号

阅读更多

 

//customwnd.h
#ifndef __CUSTOM_WINDOW_H__
#define __CUSTOM_WINDOW_H__

#include "qapplication.h"
#include "qwidget.h"
#include "messagebox"
#include "qpopumenu.h"

class CustomWnd:public QWidget
{
    Q_OBJECT  //
如果要自定义槽和消息,必须在这里调用这个宏,否则自定义的槽和消息将不会起作用
  
public:
    CustomWnd(QWidget *parent = 0, const char *name = NULL);
    ~CustomWnd();

public slots:      //
自定义槽, 如果要自定义保护槽, 就声明为 protected slots:
    void btnMessage();  //
自定义无参数槽.

    void slotTest(QString); //
自定义槽.

signals:           //
自定义信号, 如果要自定义保护信号, 就在protected: 后声明.
            //
自定义信号只需要在这里声明, 然后将槽连接到信号即可,无需实现信号函数.信号函数与槽函数的返回值类型在任何时候都可以不同; 而且如果不关心信号传递下来的参数, 信号函数与槽函数的参数列表也可以不相同, 但是如果要访问信号传递下来的任何参数时, 信号函数与槽函数的参数列表必须相同.
    void explains(); //
如果要自定义槽和信号, explains信号是必须的

    void sigTest(QString str);  //
自定义信号.

private:
    QPushButton *m_pushBtnMsg;
};
#endif

//customwnd.cpp

CustomWnd::CustomWnd(QWidget *parent = 0, const char *name = NULL)
    :QWidget(parent, name)
{
    m_pushBtnMsg = new QPushButton("MessageButton", this);
    m_pushBtnMsg->show();
    connect(m_pushBtnMsg, SIGNAL(clicked()), this, SLOT(btnMessage()));  //
将自定义槽连接到内部信号, 这里就跟消息映射函数相似.

    connect(this, SIGNAL(sigTest(QString)), this, SLOT(slotTest(QString)));  //
将自定义槽连接到自定义信号

}

CustomWnd::~CustomWnd()
{
    delete m_pushBtnMsg;
}

void CustomWnd::btnMessage()
{
    QMessageBox::warning(this, "WARNING", "just for test: will emit test signal");
    emit sigTest(QString("Test Signal"));  //
发出自定义信号
}

void CustomWnd::slotTest(QString str)
{
    QMessageBox::warning(this, "Customized signal test", str);
}

//test.cpp

#include "customwnd.h"

int main(int argc, char **argv)
{
    QApplication a(argc, argv);
    CustomWnd wnd;

    a.setMainWidget(&wnd);
    wnd.show();

    return a.exec();
}
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

分享到:
评论

相关推荐

    QT自定义信号和槽

    QT QT自定义信号和槽 QT自定义 信号和槽 QT信号。讲解怎么在 QT中自己定义消息和槽,QT编程可以看看

    QT信号槽传递自定义结构体示例

    在QT中,信号和槽机制是其核心特性之一,它使得对象间的通信变得简单而直观。本示例将探讨如何在QT中通过信号槽传递自定义结构体,以此实现更复杂的对象间数据交换。 标题"QT信号槽传递自定义结构体示例"中提到的...

    QT自定义信号与槽示例

    - **自定义槽**:同样,开发者也可以定义自己的槽函数。使用`Q_SLOTS`宏,并像普通成员函数一样声明。例如: ```cpp class MyClass : public QObject { Q_OBJECT public slots: void handleCustomEvent(int ...

    GUI开发示例代码---QTdesigner实现自定义槽函数

    在本示例中,我们将深入探讨如何利用QTDesigner来实现自定义槽函数,并结合Python进行GUI程序的开发。 首先,QTDesigner生成的是.ui文件,这是一个XML格式的文件,记录了GUI界面的所有布局和控件信息。要将.ui文件...

    以自定义数据作为信号槽的参数

    5. **`connect`函数**:连接自定义类型信号和槽时,可能需要使用`Qt::DirectConnection`或`Qt::QueuedConnection`,取决于数据是否需要同步处理或是否可以在不同线程间安全传递。例如,`connect(sender, &Sender::...

    Qt自定义按钮弹窗控件。

    3. **信号与槽机制**:在Qt中,信号和槽机制是核心的事件处理方式。我们可以为按钮的clicked()信号连接一个槽函数,当按钮被点击时,这个槽函数会被调用,从而触发弹窗的显示。例如,可以使用QDialog或QWidget类创建...

    Qt 源代码 - 06_信号和槽(二)自定义信号和槽的实例

    // 自定义槽 }; ``` 在上述例子中,`customSignal(int)`是自定义的信号,当需要向外界发送一个整数值时可以发射这个信号;`handleCustomSignal(int)`则是对应的槽,用于处理接收到的信号。 接下来,我们需要知道...

    Qt 自定义 Calendar 日历控件

    3. **信号与槽机制**: 在Qt中,信号和槽是实现对象间通信的关键机制。在自定义日历控件时,我们可以定义信号来表示日期的选择、切换等事件,并使用槽来响应这些事件,执行相应的操作。 4. **样式表(QSS)**: Qt...

    Qt自定义控件库.rar

    Qt自定义控件库是一个集合了多种自定义控件资源的压缩包,主要针对Qt开发平台,用于丰富和扩展Qt应用程序的用户界面。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动设备以及嵌入式系统的...

    QT自定义dialog提示窗

    本项目“QT自定义dialog提示窗”着重于通过纯代码方式创建对话框,无需使用UI文件。下面将详细阐述相关知识点。 1. **自定义对话框的创建**: 在QT中,可以继承`QDialog`类来创建自定义对话框。`QDialog`是QT中的...

    QT自定义tableModel和使用sqltablemodel

    3. 模型更改通知:`beginInsertRows()`, `endInsertRows()`, `beginRemoveRows()`, `endRemoveRows()`, `beginResetModel()`, `endResetModel()`,这些信号和槽用于通知视图模型数据的变化。 接下来,我们转向...

    QT 自定义控件编译与使用

    - **信号和槽**:确保自定义控件的信号和槽功能正常工作,这直接影响到与其他QT组件的交互。 - **平台兼容性**:考虑到跨平台特性,测试自定义控件在不同操作系统下的表现。 - **性能优化**:如果控件涉及大量...

    Qt 自定义导航栏

    总之,Qt自定义导航栏是提升应用用户体验的重要手段。通过合理地使用Qt提供的类和方法,我们可以创建出既美观又实用的导航结构。提供的源代码和示例是一个很好的学习资源,可以帮助开发者快速掌握自定义导航栏的实现...

    QT 自定义进度条实例

    4. **信号与槽**:QT的信号和槽机制是事件驱动编程的核心。我们可以为QProgressBar连接信号和槽,当进度改变时触发特定的操作,如更新关联的文本标签或启动/停止其他进程。 5. **编程接口**:了解QProgressBar的API...

    QT自定义对话框及采用信号槽机制与主窗口交互的应用程序示例

    在一个应用程序设计中,为了实现一些特定的功能,...samp6_2CustomDialogsSignal.rar应用程序实现方式就是利用Qt的信号与槽机制,设计相应的信号和槽,将信号与槽关联起来,在进行某个操作时发射信号,槽函数自动响应。

    Qt自定义控件

    总之,Qt自定义控件为开发者提供了强大的灵活性,使他们能够在遵循Qt的统一接口和设计原则的同时,创造出独具特色的用户界面。熟练掌握自定义控件的技巧,对于提升Qt应用的用户体验和项目质量至关重要。通过不断实践...

    qt自定义时间选择控件动态库及源码.rar

    这通常会涉及到信号和槽机制,以便在控件状态改变时通知其他组件。 5. **构建动态库**:为了在不同平台上使用,需要将源代码编译成动态库。对于Windows系统,这通常包括32位和64位版本。动态库使得应用程序可以在...

    Qt自定义控件--仪表盘源码

    4. **信号和槽**:Qt的信号和槽机制允许控件与其他组件通信。例如,仪表盘控件可能会有一个`valueChanged`信号,当数值改变时触发。 5. **动画效果**:为了使指针的移动更真实,开发者可能会使用QPropertyAnimation...

    嵌入式与物联网开发 QT 自定义信号槽.mp4

    嵌入式与物联网开发 QT 自定义信号槽.mp4

    Qt 自定义 Button 之美

    你可以连接按钮的信号到你的自定义槽函数,以执行特定的逻辑。 12. **模板类和多态性**:如果需要创建一系列相似但略有不同的按钮,可以考虑使用模板类或者多态性来设计通用的基类,然后派生出具体的按钮类型。 ...

Global site tag (gtag.js) - Google Analytics