Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值传递给自定义QtWidget的最佳方法 我还在学习C++和QT,我想知道在不需要太多连接的情况下,在多个元素之间传递一个值的最好方法是什么。_C++_Qt - Fatal编程技术网

将值传递给自定义QtWidget的最佳方法 我还在学习C++和QT,我想知道在不需要太多连接的情况下,在多个元素之间传递一个值的最好方法是什么。

将值传递给自定义QtWidget的最佳方法 我还在学习C++和QT,我想知道在不需要太多连接的情况下,在多个元素之间传递一个值的最好方法是什么。,c++,qt,C++,Qt,目前,我有一个小部件SamplerModule,其中我放置了许多自定义QPushButton(即ChordSelector)。 在这个小部件中,我为每个按钮建立了一个连接: connect(ui->btn_accords_X, SIGNAL(clicked()), ui->btn_accords_X, SLOT(changeChor())); 使用X从01到12 现在,当我点击一个按钮时,它只是改变了这个按钮的颜色。但是我还想为它设置一个文本,该文本的值可以在我的采样器模块类中找到

目前,我有一个小部件
SamplerModule
,其中我放置了许多自定义
QPushButton
(即
ChordSelector
)。 在这个小部件中,我为每个按钮建立了一个连接:

connect(ui->btn_accords_X, SIGNAL(clicked()), ui->btn_accords_X, SLOT(changeChor()));
使用
X
01
12

现在,当我点击一个按钮时,它只是改变了这个按钮的颜色。但是我还想为它设置一个文本,该文本的值可以在我的
采样器模块
类中找到。每次我点击这个按钮,我想返回一个递增的值

因此,我考虑通过3个连接来实现这一点:

  • 单击()
  • newChord(int)(ChordSelector)->updateChord(int)(samplemodule)
    通知我的小部件一个chord已更改
  • changeText(QString)(samplemodule)->setText(QString)(ChordSelector)
  • 所以这种方法应该可以,但因为我有12个按钮,所以我需要36个连接来完成这个小把戏。 你们有什么建议吗

  • 如果您使用的是QtDesigner,则
    QPushButton
    将在\u yourButtonName\u clicked()
    上有一个名为
    的默认插槽。它将自动连接到您的
    QPushButton
    click()
    信号。这可能会保存第一个连接

  • ChordSelector
    中保持指向
    SamplerModule
    的指针,或拥有
    SamplerModule
    的全局单例实例,以便在
    ChordSelector
    中轻松访问。这样,您就不必使用signal/slot来调用
    updatecord(int)
    ,一个简单的函数调用就可以了。这将保存第二个连接

  • 您可以在
    ChordSelector
    click()插槽中调用
    setText(QString)
    ,而不是在
    SampleModule
    中调用。这将保存第三个连接


  • 谢谢,伙计,首先,我不明白为什么在你的按钮上单击名称()会保存连接。它只是将click()插槽替换为on_yourButtonName_clicked()?然后,因为我只是C++的初学者,这是我的问题的一部分,我试图在<代码> ChordSelector < /COD>中访问<代码> SamplerModule <代码>的数据,所以使用另一个带有“and”代码> ExtNe< /Cuff>变量的头将是一个解决方案,但它似乎不是正确的方法。因为我无法将
    采样器模块
    包含在
    ChordSelector
    中,也不知道如何操作。在这个类中,什么是“握住指针”的正确方法?非常感谢。1.您可以考虑<代码> OnYouButnNAME.CLICKEDE()/<代码>作为自动连接槽。因此,您不必手动连接它。2.
    ChordSelector
    是否可以是单例实例(全局仅一个实例)?如果是这样,您可以实现为一个单例类。有关单身人士课程的更多信息,请参阅。谢谢!我会努力实现的!