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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QListWidget  (Прочитано 8547 раз)
vexar
Гость
« : Октябрь 29, 2009, 02:33 »

Подскажите, как мне из данной формы отправить сигнал на
открытие нового окна ? При выборе разных ОС должны открываться
разные окна.

Код

Код:
QListWidget * list = new QListWidget(0);

    QListWidgetItem * item = new QListWidgetItem;
    item->setText(trUtf8("Linux"));
    list->addItem(item);

    item = new QListWidgetItem;
    item->setText(trUtf8("Windows"));
    list->addItem(item);
   
    OkButton = new QPushButton(tr("ОК"));
Записан
DOOMer
Чайник
*
Offline Offline

Сообщений: 95



Просмотр профиля
« Ответ #1 : Октябрь 29, 2009, 02:51 »

В слоте-обработчике клика по твоей кноаке "ОК" опеределяй какой итем в данный момент выбран. И в зависимости от этого грузи нужную тебе форму.

Код:
void YourClassName::on_OkButton_clicked()
{
     switch (list->currentItem())
     {
          case 0:
          {
                //  загрузка формы 1
                ....
                break;
          }   

          case 1:
          {
                //  загрузка формы 2
                ....
                break;
          }   
          default: // если ничего не ыбрано
          break;
     }
}
Записан

Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
vexar
Гость
« Ответ #2 : Октябрь 29, 2009, 07:19 »

Ругается на ошибку: в операторе switch задано не целое
Я так понел в switch должно быть числовое значение.
Или мож я не правельно значение item присваиваю?

Код:
QListWidget * list = new QListWidget;

    ItemLinux = new QListWidgetItem("1", list);
    ItemLinux->setText(trUtf8("Linux"));

    ItemWindow = new QListWidgetItem("2", list);
    ItemWindow->setText(trUtf8("Windows"));

    OkButton = new QPushButton(trUtf8("ОК"));
    connect(OkButton, SIGNAL(clicked()), this, SLOT(on_OkButton_clicked()));

void ChoiceDocDialog::on_OkButton_clicked()
{
     switch (list->currentItem())
     {
          case 1:    break;
          case 2:    break;

          default: ;// если ничего не ыбрано

     }
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 29, 2009, 07:25 »

switch (list->currentItem()->text().toInt())
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #4 : Октябрь 29, 2009, 07:37 »

Код
C++ (Qt)
switch( list->currentRow() )
{
case 0: ...
case 1: ...
default:
}  
 
Записан
vexar
Гость
« Ответ #5 : Октябрь 29, 2009, 08:16 »

Спасибо, заработало. )))
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Октябрь 29, 2009, 14:57 »

switch (list->currentItem()->text().toInt())

QString("Windows").toInt();
QString("Linux").toInt();

?

Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Октябрь 29, 2009, 18:04 »

switch (list->currentItem()->text().toInt())

QString("Windows").toInt();
QString("Linux").toInt();

?

Подмигивающий
Посмотрел на ItemLinux = new QListWidgetItem("1", list), но не заметил ItemLinux->setText(trUtf8("Linux")); Улыбающийся
Утром мозги еще не совсем адекватно все воспринимали, подумал, что у него в итемах циферки.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vexar
Гость
« Ответ #8 : Ноябрь 17, 2009, 03:25 »

Как говорится рано обрадовался.  Обеспокоенный

Заработало, но не правильно. Не могу понять в чем дело.
Если выбрать первый пункт(Linux) и нажать OK то в БД добавиться значение из  case 0 что и правельно, но
если выбрать второй пункт(Windows) то в БД запишется два раза значение из case 0

   
Код:
 list = new QListWidget;

    ItemLinux = new QListWidgetItem(list);
    ItemLinux->setText(trUtf8("Linux"));

    ItemWindow = new QListWidgetItem(list);
    ItemWindow->setText(trUtf8("Windows"));

    OkButton = new QPushButton(trUtf8("ОК"));
    connect(OkButton, SIGNAL(clicked()), this, SLOT(on_OkButton_clicked()));

void ChoiceDocDialog::on_OkButton_clicked()
{
    switch(list->currentItem()->text().toInt())
    {
         case 0: {QSqlQuery QueryOnline;
                QueryOnline.exec( "INSERT INTO `os` VALUES ('','Linux')" );} break;
         case 1: {QSqlQuery QueryOnline;
                    QueryOnline.exec( "INSERT INTO `os` VALUES ('','Windows')" );}   break;

         //default: ;// если ничего не ыбрано

     }

Куда подсунуть:
Код:
QString("Windows").toInt();
QString("Linux").toInt();
Что-то не допер.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Ноябрь 17, 2009, 07:28 »

Не, это я немного ступил, когда писал. Нужно так:
Код:
    switch(list->currentRow())
    {
         case 0: {
              QSqlQuery QueryOnline;
              QueryOnline.exec( "INSERT INTO `os` VALUES ('','Linux')" );
              break;
              }
         case 1: {
              QSqlQuery QueryOnline;
              QueryOnline.exec( "INSERT INTO `os` VALUES ('','Windows')" );
              break;
              }
         //default: ;// если ничего не ыбрано

     }
Вот.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Ноябрь 17, 2009, 13:23 »

Куда подсунуть:
Что-то не допер.

Никуда. Это сообщение было адресовано Пантеру
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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