qtcreatorでqt5.7のGUIを開発しています。私は、同じ番号を表すチェックボックスとコンボボックスを含むウィジェットを作った。私は、コンボボックス内の新しいインデックスを設定するために信号toggled()を使用します。次に、currentIndexChanged()シグナルで同じことをして、チェックボックスの新しい状態を設定します。これは正常に動作します。qt複数のカスタムウィジェットのインスタンスがスロットをエスケープできない
私のカスタムウィジェットのインスタンスを4つ使用すると、私の問題が始まります。インスタンス[0]のコンボボックスの新しい値を選択すると、そのチェックボックスが変更されず、代わりにインスタンス3の値が変更されます。
私はカスタムウィジェットでconnect文を使用するコードの部分です。
QCheckBox* tri_st[NUM_TRIST_BUFF];
Qt_adc_delay::Qt_adc_delay(QWidget *parent) :
QWidget(parent),
ui (new Ui::Qt_adc_delay)
{
ui->setupUi(this);
int i = 0;
...
Assign the checkboxes in widget to tri_st[]
...
for(i=0;i<NUM_TRIST_BUFF;i++)
connect(tri_st[i],SIGNAL(toggled(bool)),this,SLOT(tri_state_checks_Changed(void)));
トップウィジェットでdisconnect()とconnect()をもう一度使ってみましょう。簡単な方法がありますか?
PD:ここではあなたがUi_Widgetを変更しないでください(UIC、qtcreatorのために生成される)私のui_widget.hの一部
class Ui_Widget
{
public:
Qt_adc_delay *widget;
Qt_adc_delay *widget_2;
void setupUi(QWidget *Widget)
{
if (Widget->objectName().isEmpty())
Widget->setObjectName(QStringLiteral("Widget"));
Widget->resize(500, 400);
widget = new Qt_adc_delay(Widget);
widget->setObjectName(QStringLiteral("widget"));
widget->setGeometry(QRect(10, 10, 205, 400));
widget_2 = new Qt_adc_delay(Widget);
widget_2->setObjectName(QStringLiteral("widget_2"));
widget_2->setGeometry(QRect(220, 10, 205, 400));
retranslateUi(Widget);
QMetaObject::connectSlotsByName(Widget);
} // setupUi
"tri_st"に値を割り当てるコードはありません。それは放置されたコードですか?コメントはありますが、実際のコードはありません。重要である可能性があります。 – goug