对按钮的更改发送到Qt中的QSignalMapper

时间:2017-01-28 13:33:35

标签: c++ qt qt-creator

这是代码定位的for循环,并为22个按钮提供大小:

for(int i=0; i<texts.size(); ++i)
      {
         QPushButton* button = new QPushButton(texts[i]);

        connect(button, SIGNAL(clicked(bool)),
                signalMapper, SLOT(map()));
         button -> setFixedSize(50,30);

        signalMapper -> setMapping(button, texts[i]);
         gridLayout -> addWidget(button, i/5, i%5);
      }

输出图像如下:

enter image description here

我想“手动”操纵每个按钮的sizepositioncolorfont。我想我需要以某种方式收回signalMapper的按钮,以便我能够对它们进行这些工作。你同意吗?
请做那些最简单,最直接的方法是什么?

PS:我只在 C ++代码中编写了应用程序,但没有使用 Designer

2 个答案:

答案 0 :(得分:0)

您可以使用映射功能获取每个按钮:

df

这会将按钮的文字颜色更改为数字1到红色

答案 1 :(得分:0)

您可以创建一个QList<QPuchButton>来动态存储您的所有按钮。在创建它们时执行此操作。它将会是这样的:

QList<QPushButton*> calcButtons;//QList for storing the buttons
    for(int i=0; i<texts.size(); ++i)
    {
        QPushButton* button = new QPushButton(texts[i]);
        calcButtons << button;
        connect(button, SIGNAL(clicked(bool)),
                signalMapper, SLOT(map()));
        button -> setFixedSize(50,30);

        signalMapper -> setMapping(button, texts[i]);
        gridLayout -> addWidget(button, i/5, i%5);
    }

    calcButtons[0];//Use this to access them later. '0' being the first button added.