Russian Qt Forum
Июнь 15, 2024, 23:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTable & verticalHeader  (Прочитано 6112 раз)
_nf
Гость
« : Август 03, 2005, 21:21 »

с помощью qt designer'a пишется программа (код редактируется с помощью ректора самого designer'a), есть обьект QTable *table1, нужно обрабатывать событие doubleclick() по table1->verticalHeader() (определить номер ячейки) ( в крайнем случае просто click мышкой ) , кто-нибудь сталкивался с этим? как это сделать ? . . . нужно срочно, heeeeeeeeelp . . .

может как-то можно обработать через void project::table1_doubleclicked(int,int . . . . ){} ??
Записан
Sergeich
Гость
« Ответ #1 : Август 04, 2005, 03:01 »

А в чем собственно проблема? У QHeader есть сигнал clicked(int), в параметрах которого содержится номер строки(столбца), приконнекть его к своему слоту и будет тебе счастье. Если все-таки нужен двойной клик, присоедини к сигналу QHeader::pressed(int) какой-нить свой слот, к-ый будет определять был двойной клик или нет, временной интервал для double click можно узнать через QApplication::doubleClickInterval ()
Записан
_nf
Гость
« Ответ #2 : Август 04, 2005, 08:04 »

можно подробнее ?
Записан
Zmey
Гость
« Ответ #3 : Август 04, 2005, 09:19 »

Цитата: "_nf"
можно подробнее ?

Подробнее только за деньги. Бесплатно читай ассистант.
Записан
Sergeich
Гость
« Ответ #4 : Август 04, 2005, 10:43 »

Код:

#include <qapplication.h>
#include <qtable.h>
#include <qmessagebox.h>

class HeaderObserver : public QObject
{
public:
HeaderObserver( QHeader* header, QObject* parent = 0 ) : QObject( parent ), head( header ) {
head->installEventFilter( this );
}
bool eventFilter( QObject*, QEvent* e ) {
if ( e->type() == QEvent::MouseButtonDblClick ) {
QMouseEvent* me = (QMouseEvent*) e;
if ( me->button() == Qt::LeftButton ) {
int n = head->sectionAt( me->y() );
QMessageBox::information( 0, tr("Test"), tr("Double clicked at %1").arg(n) );
}
}
return false;
}
private:
QHeader* head;
};

int main( int argc, char** argv )
{
QApplication app( argc, argv );
app.connect( &app, SIGNAL( lastWindowClosed() ), SLOT( quit() ) );
QTable t( 10, 10, 0 );
new HeaderObserver( t.verticalHeader() );
t.show();
return app.exec();
}
Записан
_nf
Гость
« Ответ #5 : Август 04, 2005, 22:36 »

спасибо тебе ОГРОМНОЕ, Sergeich !!!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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