Je voulais créer une application qui, lorsqu'elle est lancée, affiche un menu. C'est comme lorsque vous ouvrez une application de messagerie en S60. Voici une capture d'écran.Création d'un menu d'application similaire à Symbian sur S60
Comment puis-je faire? J'ai essayé de faire le centralWidget de QMainWindow en tant que QMenu et en ajoutant QAction au QMenu. Mais quand je l'exécute, l'application ne montre rien. Et j'ai essayé de faire le QMenu en utilisant QMenuBar. Et ça se voit bien. Mais je ne peux pas utiliser la touche haut/bas pour sélectionner un menu dans l'appareil. Et quand j'appuie sur la touche d'options (Qt :: PositiveSoftKey), la barre de menus apparaît aussi. Et je n'ai même pas ajouté cela à menuBar() qui appartient à QMainWindow.
Voici mon premier code:
QAction* act1= new QAction(tr("act1"),this);
QObject::connect(tes,SIGNAL(triggered()),this,SLOT(close()));
QAction* act2= new QAction(tr("act2"),this);
QObject::connect(tes,SIGNAL(triggered()),this,SLOT(close()));
QMenu* menu = new QMenu(this);
menu->addAction(act1);
menu->addAction(act2);
setCentralWidget(menu);
Et il ne montre rien aux applications.
Et voici mon deuxième essai:
Qt Code: Switch view
QAction* act1= new QAction(tr("act1"),this);
QObject::connect(tes,SIGNAL(triggered()),this,SLOT(close()));
QAction* act2= new QAction(tr("act2"),this);
QObject::connect(tes,SIGNAL(triggered()),this,SLOT(close()));
QMenuBar* menubar = new QMenuBar(this);
QMenu* menu = menubar->addMenu(tr("menu"));
menu->addAction(act1);
menu->addAction(act2);
setCentralWidget(menu);
Il montre le menu. Mais lorsque je déploie sur l'appareil, je ne peux pas utiliser le clavier pour sélectionner le menu. Et au simulateur, si je clique sur un autre endroit que l'élément QAction, le menu est perdu.
J'utilise une autre approche en utilisant QPushButton avec la disposition verticale. Voici le code:
QWidget* centralWidget = new QWidget(this);
QScrollArea* scrollArea = new QScrollArea(this);
scrollArea->setWidget(centralWidget);
scrollArea->setWidgetResizable(true);
setCentralWidget(scrollArea);
QVBoxLayout* centralLayout = new QVBoxLayout(centralWidget);
QPushButton* button1 = new QPushButton(tr("button 1"));
QPushButton* button2 = new QPushButton(tr("button 2"));
centralLayout->addWidget(button1);
centralLayout->addWidget(button2);
centralLayout->setContentsMargins(0,0,0,0);
button1->setFocus();
Voici son look:
D'accord, et qui est l'air assez bon. Mais si c'est 8 bouton. Si elle est à seulement 2 ont le bouton, il ressemble à ceci:
ressemble un peu bizarre, hein? Un moyen d'empêcher cela?
pouvez-vous me donner un exemple en utilisant QListWidget ou QListView? Je dois l'utiliser pour S60 sans contact. J'ai déjà essayé QListWidget, mais il a besoin de QListWidgetItem pour l'utiliser. J'ai essayé d'hériter QPushButton et QListWidgetItem mais cela ne fonctionne pas bien. – dieend
Il n'est pas nécessaire d'hériter de QPushButton, le QListWidget peut émettre des signaux pour informer qu'il a été cliqué ou sélectionné. Ceci est montré dans l'exemple que j'ai ajouté. –
Je viens de le déployer sur l'appareil. La vue est bonne. Mais je ne peux pas cliquer dessus. :(Avez-vous une idée? Au simulateur, il fonctionne bien. :( – dieend