Здравствуйте, гость ( Вход | Регистрация )
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 |
connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT())); Не совсем так. правильно писать connect(TAB, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), SLOT(OPEN_PRODUCT(QTableWidgetItem *))); Осталось только понять, можно ли сделать так, чтобы сигнал высылался, когда кликаешь по только по определенной колонке. Ну так обрабатывай нажатия вручную и если клик произошел по той колонке с помощью 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 |
Цитата 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 |
Появился еше один вопрос. Много пробовал, но не смог понять.
TAB - это моя таблица, объект класса QTableWidget OPEN_PRODUCT() - мой слот Требуется, чтобы myitem указывал на ячейку с координатами (0,0) , чтобы при двойном клике по ней вызывался мой слот. Не получается это сделать. Если кто знает как, подскажите пожалуйста. |
|
kvak | Дата 29.8.2010, 20:46 |
Классно | |
Litkevich Yuriy | Дата 29.8.2010, 12:39 |
Я догадываюсь, что можно использовать методы класса QTableView, но как именно не знаю. методы базового класса наследуются дочерним классом, т.е. как бы "становятся методами дочернего". |
|
Алексей1153 | Дата 29.8.2010, 12:11 |
Цитата Inherits QTableView. да так же, как и обычно
|
|
kvak | Дата 29.8.2010, 11:57 |
Да. Но у меня класс то QTableWidget. Я догадываюсь, что можно использовать методы класса QTableView, но как именно не знаю. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 16:45 |