crossplatform.ru

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


  Ответ в добавить ряд, столбец в таблицу
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kvak Дата 1.9.2010, 22:33
  Спасибо, я уже понял про сигнал. А чтобы обрабатывать сигналы только с нужной колонки я воспользовался встроенными методами.

connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT(QTableWidgetItem *)));

OPEN_PRODUCT(QTableWidgetItem *checkitem) {

int colonna = checkitem->column();
if(colonna == 0){
//нужный код
}
}
molchanoviv Дата 1.9.2010, 10:28
 
Цитата(kvak @ 31.8.2010, 21:19) *
connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT()));


Не совсем так. правильно писать connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT(QTableWidgetItem *)));

Цитата(kvak @ 31.8.2010, 21:19) *
Осталось только понять, можно ли сделать так, чтобы сигнал высылался, когда кликаешь по только по определенной колонке.


Ну так обрабатывай нажатия вручную и если клик произошел по той колонке с помощью emit вызывай свой сигнал. Т.Е. в *.h файле опиши свой сигнал. signals: void mySignal(QTableWidgetItem *), затем в *.cpp соединяй свой сигнал со слотом OPEN_PRODUCT(QTableWidgetItem *) а сигнал itemDoubleClicked со слотом в котором ты вяснишь туда ли произошел клик и если да, то вызывай сигнал с помощью emit mySignal(QTableWidgetItem *). Код не пишу намеренно, чтобы ты мог разобраться сам.
kvak Дата 31.8.2010, 20:19
  Все, понял как. Вот так сигнал высылается и слот открывается, когда кликаешь 2 раза по любой ячейке
connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT()));

Осталось только понять, можно ли сделать так, чтобы сигнал высылался, когда кликаешь по только по определенной колонке.
kvak Дата 30.8.2010, 23:27
 
Цитата(molchanoviv @ 30.8.2010, 22:57) *
Цитата
connect(TAB, SIGNAL(itemDoubleClicked(myitem)), this, SLOT(OPEN_PRODUCT()));

Во первых вместо myitem должен стоять тип, во вторых в слоте от тоже должен быть указан. А вообще просто с помощью emit вызывай свой сигнал и все.


Я как понял, что в аргумент сигнала нужно передать указатель на объект класса QTableWidgetItem.
Но я не знаю, как создать сам объект типа QTableWidgetItem, чтобы он принадлежал определенной ячейке в таблице.
По-другому не предсталяю как. Если не сложно, напишите сам код.
molchanoviv Дата 30.8.2010, 21:57
 
Цитата
connect(TAB, SIGNAL(itemDoubleClicked(myitem)), this, SLOT(OPEN_PRODUCT()));

Во первых вместо myitem должен стоять тип, во вторых в слоте от тоже должен быть указан. А вообще просто с помощью emit вызывай свой сигнал и все.
kvak Дата 30.8.2010, 21:23
  Появился еше один вопрос. Много пробовал, но не смог понять.

connect(TAB, SIGNAL(itemDoubleClicked(myitem)), this, SLOT(OPEN_PRODUCT()));


TAB - это моя таблица, объект класса QTableWidget
OPEN_PRODUCT() - мой слот

Требуется, чтобы myitem указывал на ячейку с координатами (0,0) , чтобы при двойном клике по ней вызывался мой слот. Не получается это сделать. Если кто знает как, подскажите пожалуйста.
kvak Дата 29.8.2010, 20:46
  Классно :rolleyes:
Litkevich Yuriy Дата 29.8.2010, 12:39
 
Цитата(kvak @ 29.8.2010, 15:57) *
Я догадываюсь, что можно использовать методы класса QTableView, но как именно не знаю.
методы базового класса наследуются дочерним классом, т.е. как бы "становятся методами дочернего".
Алексей1153 Дата 29.8.2010, 12:11
 
Цитата
Inherits QTableView.

да так же, как и обычно

QTableWidget p* =new QTableWidget(...);
p->setColumnWidth (...);



kvak Дата 29.8.2010, 11:57
  Да. Но у меня класс то QTableWidget. Я догадываюсь, что можно использовать методы класса QTableView, но как именно не знаю.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 11:44