crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> вызов окна в зависимости от выбранного значения в combobox, вызов окна в зависимости от выбранного значения в combobox
lexflax
  опции профиля:
сообщение 3.1.2015, 15:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 26.5.2013
Пользователь №: 3841

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток.
Подскажите как по двойному клику вызывать 5 разных окон, в зависимости от того какие данные сейчас загружены в tableview.
Если загружены данные о возвратах то будет вызвано окно для редактирования возвратов, если загружены расходные накладные то будет вызвано окно для редактирования расходных накладных.
Сейчас естественно при любой загрузке вызывается одно и тоже окно...
Данные загружаются после выбора в combobox
void MainWindow::echoChanged(int index)
{
    QSqlQueryModel *rashodnie = new QSqlQueryModel;
    QSqlQuery query;
switch (index){
case 0:
    query.exec("SELECT * FROM rashodnie_nacladnie");
    break;
case 1:
    query.exec("SELECT * FROM vozvrati");
break;
case 2:
    query.exec("SELECT * FROM d_postuplenia");
    break;
case 3:
    query.exec("SELECT * FROM prihodi");
break;
case 4:
    query.exec("SELECT * FROM spisania");
break;

    default:
            return;  }
rashodnie->setQuery(query);
ui->tableView->setModel(rashodnie);
}


Можно как то связь эту установить чтоб учитывалось из какой таблицы сейчас выгружены данные, и тогда после двойного клика вызывалось нужное окно.
К примеру сейчас 2 окна вызывается, расходные накладные и возвраты а должно только одно в зависимости от того какие данные сейчас выбраны в комбобоксе

void MainWindow::insertRecord(){
      Prosmotrrashodnakladnih *prosmotrnakladnih = new Prosmotrrashodnakladnih;
      prosmotrnakladnih->show();

      ProsmotrVozvratov *prosmotrvozvratov = new ProsmotrVozvratov;
      prosmotrvozvratov->show();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.1.2015, 22:14
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Делаешь один базовый класс для твоих документов, от которого будут унаследованы твои Prosmotrrashodnakladnih, ProsmotrVozvratov и другие.
Добавляешь объект базового класса в твой класс MainWindow и делашь что-то вроде:
switch (index)
{
case 0:
     m_pBaseDoc = new Prosmotrrashodnakladnih;
    break;
case 1:
     m_pBaseDoc = new ProsmotrVozvratov;
break;
    default: return;  
}
Или реализуй полноценную фабрику классов...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 9:08