处理来自动态按钮阵列的信号

罗马Valcer

我正在制作一个QWidget后代的类,该类由按钮(按钮表)组成。现在,此对象发送的信号很简单:void wasClicked(size_t x, size_t y)在网格中发送按钮坐标。但是为此,我需要将QPushButton的点击信号连接到我的小部件。由于插槽/信号的数量取决于运行时未确定的网格大小,因此我无法提前创建足够的插​​槽。那我该怎么办?

迪莉迪尔123

我将连接按钮,以便它们都将信号发送到同一插槽。

我没有测试此代码。这只是一个概念证明的尝试

class ButtonTable : public QWidget 
{    
    Q_OBJECT       

public:
    ButtonTable()
    void createButtons();


private:
    int height;
    int width;
    QVector<Button*> buttons

private slots:
   btnClicked();
};

void ButtonTable::createButtons() {
    for (int i = 0; i < height; ++i) {
        for (int j = 0; j < width; j++) {
            Button* btn = new Button(this);
            btn.row = i;
            btn.col = j;
            connect(button, SIGNAL(clicked()), this, SLOT(btnClicked()));
            buttons.push_back(btn);
        }
    } 
}


void ButtonTable::btnClicked()
{
   Button *btn = qobject_cast<Button *>(sender());  
   //Do something with button

}


class Button : public QToolButton
{
    Q_OBJECT

public:
    explicit Button(QWidget *parent = 0);
    int row;
    int col;
};

因此,有许多按钮,但是每个clicked()按钮都移至一个插槽。您可以找到QObject :: sender()所按下的按钮,并且由于它们是继承自QToolButton的自定义按钮,因此您可以在该类中存储所需的其他信息。

请记住,由于动态尺寸,您还必须以编程方式对按钮进行布局。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理来自动态按钮阵列的信号

来自分类Dev

自动:阵列末尾的按钮

来自分类Dev

处理来自Component.onCompleted的信号

来自分类Dev

PHPStorm自动完成阵列键(动态插入)

来自分类Dev

来自动态ul按钮单击事件的文本框值

来自分类Dev

来自动态ul按钮单击事件的文本框值

来自分类Dev

如果图像(来自动态资源)不可用,则按钮默认内容

来自分类Dev

在单个页面中处理来自动态创建的控件的多个“链接”回发

来自分类Dev

处理自动创建的退出按钮?

来自分类Dev

如何逃生 来自动态生成的iframe

来自分类Dev

来自动态生成的表单的Redux值

来自分类Dev

Elm - 来自动态创建的输入的 onBlur

来自分类Dev

gtkmm,如何让我的程序等待来自按钮的点击信号?

来自分类Dev

来自信号处理程序的pthread_join

来自分类Dev

在Bash脚本中处理来自子进程的信号

来自分类Dev

如何使用cellWidget处理来自QTableWidget单元的信号

来自分类Dev

使用自动布局VFL垂直堆叠按钮阵列

来自分类Dev

使用自动布局VFL垂直堆叠按钮阵列

来自分类Dev

带有点击信号的课堂动态按钮生成

来自分类Dev

可以通过信号处理程序功能设置一个可变值,以响应来自GUI的信号?

来自分类Dev

动态创建的处理按钮下拉菜单

来自分类Dev

php处理动态创建的单选按钮

来自分类Dev

在PHP POST中处理动态单选按钮

来自分类Dev

本地 QEventLoop - 等待来自线程的信号 - 防止处理来自主事件循环的事件

来自分类Dev

VeeValidate不验证来自动态表单的输入

来自分类Dev

来自动态IP的DDWRT端口转发请求

来自分类Dev

侦听来自动态创建的组件的事件

来自分类Dev

来自动态创建的元素的操作不起作用

来自分类Dev

来自动态 JSON 的表单构建器字段

Related 相关文章

  1. 1

    处理来自动态按钮阵列的信号

  2. 2

    自动:阵列末尾的按钮

  3. 3

    处理来自Component.onCompleted的信号

  4. 4

    PHPStorm自动完成阵列键(动态插入)

  5. 5

    来自动态ul按钮单击事件的文本框值

  6. 6

    来自动态ul按钮单击事件的文本框值

  7. 7

    如果图像(来自动态资源)不可用,则按钮默认内容

  8. 8

    在单个页面中处理来自动态创建的控件的多个“链接”回发

  9. 9

    处理自动创建的退出按钮?

  10. 10

    如何逃生 来自动态生成的iframe

  11. 11

    来自动态生成的表单的Redux值

  12. 12

    Elm - 来自动态创建的输入的 onBlur

  13. 13

    gtkmm,如何让我的程序等待来自按钮的点击信号?

  14. 14

    来自信号处理程序的pthread_join

  15. 15

    在Bash脚本中处理来自子进程的信号

  16. 16

    如何使用cellWidget处理来自QTableWidget单元的信号

  17. 17

    使用自动布局VFL垂直堆叠按钮阵列

  18. 18

    使用自动布局VFL垂直堆叠按钮阵列

  19. 19

    带有点击信号的课堂动态按钮生成

  20. 20

    可以通过信号处理程序功能设置一个可变值,以响应来自GUI的信号?

  21. 21

    动态创建的处理按钮下拉菜单

  22. 22

    php处理动态创建的单选按钮

  23. 23

    在PHP POST中处理动态单选按钮

  24. 24

    本地 QEventLoop - 等待来自线程的信号 - 防止处理来自主事件循环的事件

  25. 25

    VeeValidate不验证来自动态表单的输入

  26. 26

    来自动态IP的DDWRT端口转发请求

  27. 27

    侦听来自动态创建的组件的事件

  28. 28

    来自动态创建的元素的操作不起作用

  29. 29

    来自动态 JSON 的表单构建器字段

热门标签

归档