Событие Qt C ++ при нажатии кнопки

Я пишу приложение с использованием фреймворка Qt. Я использую собственный CSS-файл для стилизации своих виджетов и компонентов, например так:

  QPushButton:checked#switchButtonConsole, QPushButton:checked#switchButtonList, QPushButton:checked#switchButtonStats {
background: qlineargradient(spread:reflect, x1:1, y1:0, x2:1, y2:1, stop:0 #151513, stop:1 #101010);
border-right: 1px solid #2E2E26;
padding: 5px;
color: #94948E;
}

У меня разные стили CSS в зависимости от состояния кнопки. Независимо от того, отмечена она или нет.

У меня есть 3 кнопки, и по умолчанию первая кнопка отмечена, остальные отключены. Вот код, который я использую, чтобы установить состояние кнопки:

void MainWindow::on_switchButtonConsole_clicked() {
ui->mainStack->setCurrentIndex(3);

if(!isChecked(ui->switchButtonConsole)) {
ui->switchButtonConsole->setChecked(true);
};

};

Проблема, с которой я столкнулся, заключается в том, что если я нажму на другую кнопку (помните, у меня есть функция, подобная приведенной выше для каждой кнопки), предыдущая нажатая кнопка останется в проверенном состоянии и, следовательно, стиль проверенного состояния останется. Поэтому, если я нажимаю на все 3 кнопки, похоже, что они отмечены.
Кажется, я не могу понять, как установить предыдущую нажатую кнопку в непроверенное состояние, так что это относится только к стилю отмеченного состояния к кнопке, которую я НАСТОЯЩИЙ нажал, и устанавливает непроверенный стиль для остальных кнопок.

1

Решение

Непосредственное решение здесь — добавить все три кнопки в QButtonGroup и установить для них эксклюзив. Таким образом, Qt автоматически сделает то, что вы хотите.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]