Преждевременное отображение динамически созданных виджетов (Qt C++)
Почему после компиляции программы, ещё до того как сработала функция on_comboBox_currentIndexChanged(int index), которая реагирует на изменение индекса в comboBox, у меня label, который должен создаваться createLabel(8,60, ... ), уже отображается на заданном месте с заданными параметрами? то есть, ещё не вызывав эту функцию, label уже создаётся в заданной точке и является видимым. Почему? И как исправить чтобы появлялся только с момента выбора из comboBox.
void MainWindow::createLabel(int number, int x, int y, int width, int height, QString styleSheet) {
QLabel* label = new QLabel(this);
label->setObjectName("label_" + QString::number(number));
label->setFixedSize(width, height);
label->setStyleSheet(styleSheet);
labelArray.append(label);
label->move(x, y);
}
void MainWindow::on_comboBox_currentIndexChanged(int index)
{
if (index == 0) {
setting = "Circle";
createLabel(8, 60, 670, 211, 91, "background-color: #DBDBDB; border-radius: 15px; ");
}
else if (index == 1) setting = "Ellipse";
}
Ответы (1 шт):
проблемы была в самом начале использовать неверный сигнал currentIndexChanged. он действительно реагирует как на изменение пользователем визуально, так и программно
изменил с void MainWindow::on_comboBox_currentIndexChanged(int index) на void MainWindow::on_comboBox_activated(int index) (изменение только пользователем визуально)