Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: _nf от Августа 03, 2005, 21:21



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

может как-то можно обработать через void project::table1_doubleclicked(int,int . . . . ){} ??


Название: QTable & verticalHeader
Отправлено: Sergeich от Августа 04, 2005, 03:01
А в чем собственно проблема? У QHeader есть сигнал clicked(int), в параметрах которого содержится номер строки(столбца), приконнекть его к своему слоту и будет тебе счастье. Если все-таки нужен двойной клик, присоедини к сигналу QHeader::pressed(int) какой-нить свой слот, к-ый будет определять был двойной клик или нет, временной интервал для double click можно узнать через QApplication::doubleClickInterval ()


Название: QTable & verticalHeader
Отправлено: _nf от Августа 04, 2005, 08:04
можно подробнее ?


Название: QTable & verticalHeader
Отправлено: Zmey от Августа 04, 2005, 09:19
Цитата: "_nf"
можно подробнее ?

Подробнее только за деньги. Бесплатно читай ассистант.


Название: QTable & verticalHeader
Отправлено: Sergeich от Августа 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();
}


Название: QTable & verticalHeader
Отправлено: _nf от Августа 04, 2005, 22:36
спасибо тебе ОГРОМНОЕ, Sergeich !!!!!