PDA

View Full Version : signals for key presses ?



eGamer
9th June 2009, 07:59
i have a QWidget object and want to add handlers for some key presses, the traditional way
is to inherit QWidget and reimplement the virtual funcitons, my question is: can i add
event handlers without inheriting QWidget ?
is there signals for keyboard events ?:confused:

spirit
9th June 2009, 08:17
you can set event filter on you widget and process QKeyEvent.
take a look at QObject::installEventFilter and QObject::eventFilter.

eGamer
9th June 2009, 08:34
Thank you,this solution is based on inheriting QObject, but i don't want to use inheritance.

spirit
9th June 2009, 08:36
what do you want to achive? give us more information.

eGamer
9th June 2009, 09:04
here is the code:


int main(int argc,char** args)
{
QApplication a(argc, argv);
QSplitter* splitter = new QSplitter();

QDirModel* model = new QDirModel();
QTreeView* tree = new QTreeView(splitter);
tree->setModel(model);
tree->setRootIndex( model->index( QDir::currentPath() ) );

QListView* lview = new QListView(splitter);
lview->setModel(model);
lview->setRootIndex( model->index(QDir::currentPath()) );

QStringList* stringList = new QStringList( QString("item 0") );
for (int i = 1;i<10;i++)
stringList->append( QString("item %1").arg(i) );

StringListModel* myCustomModel = new StringListModel(*stringList);
QTreeView* view3 = new QTreeView(splitter);
view3->setModel(myCustomModel);

splitter->show();

return a.exec();
}


as i press enter i want to add new string to stringList and reflect the changes to the view.

spirit
9th June 2009, 09:08
I don't see a problem. create a new widget and put your splitter on it, then install event filter on needed widget and process key event.

eGamer
9th June 2009, 09:12
Yes i tried it and it works, thank you. :)