Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
1

Нажатие кнопки с выбранным элементом списка

23.04.2014, 15:26. Просмотров 642. Ответов 6
Метки нет (Все метки)

Есть виджет ListWidget с тремя элементами:
"элемент 1";
"элемент 2";
"элемент 3".
И есть кнопка PushButton, по нажатию которой должно происходить опред. действие. Так вот, собственно, вопрос: как взаимодействовать с элементами ListWidget при нажатии на кнопку?
Допустим, что при выделении первого элемента и последующего нажатия кнопки будет делаться что-то, а при выборе второго элемента уже другое действие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 15:26
Ответы с готовыми решениями:

Как эмулировать нажатие кнопки?
у меня есть окно QDialog в нем есть кнопки нужно чтоби при нажатии кнопки на...

Нажатие кнопки без сигнала clicked()
Имеется QToolButton, нужно чтобы текст выводился при нажатии на кнопку мышкой и...

Qtreeview отлавливать нажатие правой кнопки на элементах
есть QTreeView, в нем древовидная модель. Надо при нажатии на правую кнопку на...

Максимальное значение QScrollBar при нажатие кнопки
#include <QApplication> #include <QHBoxLayout> #include <QSlider> #include...

Как перехватывать нажатие правой кнопки мыши в Qml?
Как перехватывать нажатие правой кнопки мыши, для левой я знаю MouseArea{ ...

6
Chernobyl
217 / 217 / 69
Регистрация: 30.09.2012
Сообщений: 545
23.04.2014, 15:51 2
SanchezPluz, Например так, пусть есть какой-то список в виджете
C++ (Qt)
1
2
3
    ui->listWidget->addItem("1");
    ui->listWidget->addItem("2");
    ui->listWidget->addItem("3");
А мы по сигналу клика какой-то вашей кнопки, ловим какой номер выделен. Например вот так.
C++ (Qt)
1
2
3
    if(ui->listWidget->item(0)->isSelected())
        qDebug() << "Первый выбран"; //ui->textEdit->append("Первый выбран");
    //И так далее...
1
alexey_rage
591 / 391 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
23.04.2014, 18:11 3
Цитата Сообщение от Chernobyl Посмотреть сообщение
if(ui->listWidget->item(0)->isSelected()) qDebug() << "Первый выбран"; //ui->textEdit->append("Первый выбран");
- зачем это, если можно сразу взять ui->listWidget->currentRow() ???

А если будет миллион элементов, на каждый будете писать if(ui->listWidget->item(n)->isSelected()) ???
1
Chernobyl
217 / 217 / 69
Регистрация: 30.09.2012
Сообщений: 545
23.04.2014, 18:30 4
alexey_rage, Так, конечно, тоже пойдет, но если я правильно понял задачу, проверки все равно не избежать, ведь действия разные, поетому если есть n элементов, то и писать нужно будет много условий, просто типа
C++ (Qt)
1
2
3
4
if(ui->listWidget->currentRow() == 0)
{
//...
}
1
alexey_rage
591 / 391 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
23.04.2014, 21:09 5
Chernobyl, а я вот думаю, что лучше сделать через switch.

C++ (Qt)
1
2
3
4
5
6
7
8
9
switch(ui->listWidget->currentRow())
{
  case 1:
  // Выполняем действия
       break;
  case n:
  // Выполняем действие
       break;
}
А если все делать через if(), то при большом количестве элементов будет много времени тратится на перебор и проверку всех условий.
1
Chernobyl
217 / 217 / 69
Регистрация: 30.09.2012
Сообщений: 545
23.04.2014, 22:03 6
alexey_rage, Я с вами полностью согласен и сам делаю через свич-кейс , если чего-то много. Но просто основой для автора есть всё же то, как взять текущий айтем(теперь он наверное уже разобрался), а как он дальше поступит, это уже на его рассуждение. Поетому я и не уделил столько внимания реализации условий.
0
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
24.04.2014, 09:23  [ТС] 7
Chernobyl, большое спасибо! То, что мне нужно. Долго думал - сам не догадался.
Зачем-то использовал currentItem, да и число впихивал не туда.
alexey_rage, спасибо за совет, но у меня всего три элемента. Будет больше - воспользуюсь.
0
24.04.2014, 09:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 09:23

Смена подписи кнопки на метку и обратно при нажатие
Начали в универе изучать QT Creator и тут встал на задаче: При нажатие кнопки...

Длительное нажатие кнопки должно вызывать другую функцию, нежели обычное
Добрый день! Подскажите может кто-то уже с этим сталкивался, как реализовать...

QlistWidget перенос элемента из одного списка в другой при нажатии кнопки
Не получаться из одного QlistWidget перенести элемент в другой QlistWidget при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru