Я разрабатываю gui в qt5.7 с qtcreator. Я сделал виджет, который содержит флажки и комбинированные поля для представления того же числа. Я использую сигнал toggled(), чтобы установить новый индекс в поле со списком. Затем я делаю то же самое с сигналом currentIndexChanged(), чтобы установить новые состояния для флажков. Это прекрасно работает.qt несколько экземпляров пользовательского виджета не могут вырезать свои слоты
Проблема возникает, когда я использую 4 экземпляра моего пользовательского виджета. Когда я выбираю новое значение для combobox в экземпляре [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)));
Постараюсь использовать разъединение() и подключения() еще раз в моем верхнем виджете, чтобы заставить его работать, но. Есть простой способ сделать это?
П.Д.: Вот часть моего ui_widget.h (генерируется для МСЖД, QtCreator)
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