Russian Qt Forum
Ноябрь 24, 2024, 17:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QListWidget и война с currentItemChanged  (Прочитано 15366 раз)
l_a_m
Гость
« Ответ #15 : Апрель 16, 2010, 14:35 »

вернёмся к нашим баранам!

решил решить проблему в лоб как говориться:
Код:
QMessageBox msg(QMessageBox::Question, "AXTUNG!!!", "Are you shure?", QMessageBox::Yes | QMessageBox::No);
if(msg.exec() == QMessageBox::No)
{
QBrush bcolor = current->background();
QBrush fcolor = current->foreground();

current->setBackground(previous->background());
previous->setBackground(bcolor);

current->setForeground(previous->foreground());
previous->setForeground(fcolor);

disconnect(&macList, SIGNAL(currentItemChanged ( QListWidgetItem * , QListWidgetItem * )), this, SLOT(ItemChanged(QListWidgetItem * , QListWidgetItem * )));
macList.setCurrentItem(previous);
macList.setCurrentRow(macList.row(previous));
macList.setItemSelected(previous, true);
macList.setItemSelected(current, false);

// macList.setCurrentIndex(macList.indexFromItem(previous));
connect(&macList, SIGNAL(currentItemChanged ( QListWidgetItem * , QListWidgetItem * )), this, SLOT(ItemChanged(QListWidgetItem * , QListWidgetItem * )));
}
label.setText(macList.currentItem()->text());

при помощи молотка и такой-то матери, а именно label.setText(macList.currentItem()->text()); выяснил, что текущее значение остаётся правильным, но вот подсветка переходит на последний выбранный элемент, уже пробовал танцы с бубном вокруг заднего фона - не помогло, ткните носом, что может ещё подсвечиваться? :-)
Записан
l_a_m
Гость
« Ответ #16 : Апрель 16, 2010, 16:04 »

Ура товарищи! ЗАБОРОЛ!

если вдруг кому интересно пишу как:
Код:
//.срр
List::List(QWidget *parent)
: QWidget(parent)
{
macList.addItem("1");
macList.addItem("2");
macList.addItem("3");
previoseItem = macList.findItems("3", Qt::MatchFixedString)[0];
macList.setCurrentItem(previoseItem);
main.addWidget(&macList);
main.addWidget(&label);
this->setLayout(&main);
connect(&macList, SIGNAL(itemSelectionChanged()), this, SLOT(ItemChanged()));
}

void List::ItemChanged( )
{
QMessageBox msg(QMessageBox::Question, "AXTUNG!!!", "Are you shure?", QMessageBox::Yes | QMessageBox::No);
if(msg.exec() == QMessageBox::No)
{
if(previoseItem!=macList.currentItem())
{
disconnect(&macList, SIGNAL(itemSelectionChanged()), this, SLOT(ItemChanged()));
macList.setCurrentItem(previoseItem);
connect(&macList, SIGNAL(itemSelectionChanged()), this, SLOT(ItemChanged()));
}
}
else
{
previoseItem = macList.currentItem();
}
label.setText(macList.currentItem()->text());
}

//.h
class List : public QWidget
{
Q_OBJECT

public:
List(QWidget *parent =0);
~List();

private:
QVBoxLayout main;
QListWidget macList;
QLabel label;
QListWidgetItem *previoseItem;

private slots:
void ItemChanged (  );
};
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 21.