Название: Работа с виджетами! Отправлено: kadr от Октябрь 26, 2009, 20:50 Привет! Подскажите, вот возникла необходимость получить доступ к компанентам с одного выджета к другому, а если точнее- есть два поля, при двойном клике на строчке одного поля, вся строчка переноситься в другое поле, но перед этим открывается виджет на котором надо указать количество, которое присутсвует в одном из столбцов переносимой строки, так вот надо что бы после того как введено нужное количество и нажата кнопка, во втором поле в колонке с количеством проставилось то количество которое было указано в виджете!
Как можно это все осуществить? ??? Название: Re: Работа с виджетами! Отправлено: Пантер от Октябрь 26, 2009, 20:58 Что-то как-то расплывчато написано. Давай конкретнее с примерами.
Название: Re: Работа с виджетами! Отправлено: pastor от Октябрь 26, 2009, 21:03 а если точнее- есть два поля, при двойном клике на строчке одного поля, вся строчка переноситься в другое поле А если еще точнее? Чем представлены эти "поля"? Название: Re: Работа с виджетами! Отправлено: kadr от Октябрь 26, 2009, 21:29 Одним словом два поля QTableWidget с одинаковыми колонками (Название, количество, цена, производитель). Так вот в одном поле отображаются все товары, второе это типа корзины, в которое набирается товар. Так вот по двойному клику, товар - строчка челиком, а точнее каждая ячейка, переходит в дрогое поле:
QString kol; QWidget *tov = new tov_kol; tov->show(); tov->setGeometry(500,400,400,103); tov->setFixedSize(99,48); //---------------------------------------------------------------------------------------------------- ui->korzina->insertRow(kors); ui->korzina->setItem(kors,0, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),0)->text())); ui->korzina->setItem(kors,1, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),1)->text())); ui->korzina->setItem(kors,3, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),3)->text())); ui->korzina->setItem(kors,4, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),4)->text())); kors++; После двойного клика открывается виджет под названием tov_kol, на котором есть 3 компонента: собственно label, splinBox и кнопка, после нажатия на которую должно происходить следующее: 1. Число из splinBox-а должно переходить во второе поле ui->korzina в колонку количество 2. виджет tov_kol закрывается! Да и надо сделать как то чтобы пока он не закрылся, он не давал ничего больше делать, то есть постоянно находился в фокусе! Название: Re: Работа с виджетами! Отправлено: lit-uriy от Октябрь 26, 2009, 23:13 Цитировать Да и надо сделать как то чтобы пока он не закрылся, он не давал ничего больше делать, то есть постоянно находился в фокусе! Для этого используй void setWindowModality ( Qt::WindowModality windowModality )Название: Re: Работа с виджетами! Отправлено: kadr от Октябрь 27, 2009, 09:52 Цитировать Да и надо сделать как то чтобы пока он не закрылся, он не давал ничего больше делать, то есть постоянно находился в фокусе! Для этого используй void setWindowModality ( Qt::WindowModality windowModality )Название: Re: Работа с виджетами! Отправлено: Пантер от Октябрь 27, 2009, 12:33 QWidget *tov = new tov_kol;
tov это QWidget или tov_kol? Что-то у тебя все настолько нехорошо... Как нужно: Наследуешься от QWidget, раскидываешь нужные контролы и определяешь функции: Код А потом к ним обращаешься. Название: Re: Работа с виджетами! Отправлено: kadr от Октябрь 27, 2009, 16:36 tov это локальный идентификатор виджета, tov_kol, который я создал и добавил в проект.
Название: Re: Работа с виджетами! Отправлено: Пантер от Октябрь 27, 2009, 17:44 Как ты его создал? Как добавляешь в проект?
"Ничего не понимаю" (Братья пилоты) Код Вот 2 варианта, которые могут быть, а у тебя вообще не пойми что. Название: Re: Работа с виджетами! Отправлено: kadr от Октябрь 27, 2009, 19:51 Да я использую вот этот вариант QWidget *tov = new tov_kol; плюс я его подключаю через #include "tov_kol.h" вот.
Этот виджет открывается при двойном нажатии на любой строке в поле QTableWidget. void MainWindow::on_pole_doubleClicked(QModelIndex index) { QString kol; QWidget *tov = new tov_kol; tov->show(); tov->setGeometry(500,400,400,103); tov->setFixedSize(99,48); //---------------------------------------------------------------------------------------------------- ui->korzina->insertRow(kors); // qDebug() << ui->pole->item(ui->pole->currentRow(),0)->text(); ui->korzina->setItem(kors,0, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),0)->text())); ui->korzina->setItem(kors,1, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),1)->text())); //ui->pole->setItem(row,2, new QTableWidgetItem(q.value(2).toString())); ui->korzina->setItem(kors,3, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),3)->text())); ui->korzina->setItem(kors,4, new QTableWidgetItem(ui->pole->item(ui->pole->currentRow(),4)->text())); //ui->pole->setItem(row,5, new QTableWidgetItem(q.value(4).toString())); kors++; ui->kol->setText(kol.setNum(ui->korzina->rowCount())); } Надо что бы после нажатия на кнопку в виджете tov_kol, цифра из splinBox виджета tov_kol, заносилась в ui->korzina->setItem(kors,1, new QTableWidgetItem("вот сюда")); Название: Re: Работа с виджетами! Отправлено: Пантер от Октябрь 28, 2009, 07:16 Я уже объяснил, вводишь в tov_kol поля value и setValue и через них работаешь. Что не понятно?
Название: Re: Работа с виджетами! Отправлено: kadr от Октябрь 28, 2009, 10:30 Я уже объяснил, вводишь в tov_kol поля value и setValue и через них работаешь. Что не понятно? Блин я не понимаю как ей пользоваться в какую часть кода ее вставлять:void setValue(int value) (kol_box->setValue(value)) { int value(); return kol_box->value(); } И как к ней потом обращаться с другого виджета? Название: Re: Работа с виджетами! Отправлено: Пантер от Октябрь 28, 2009, 12:39 Ппц.
Код
Код Если и сейчас не понятно, то я уже не знаю как дальше разжевывать. |