Я хотел создать приложение, которое при запуске показывает меню.Это так же, как когда вы открываете приложение обмена сообщениями в S60.Вот скриншот.
Как мне это сделать?Я попытался сделать centralWidget QMainWindow как QMenu и добавить QAction в QMenu.Но когда я запускаю его, приложение ничего не показывает.И я попытался сделать QMenu, используя QMenuBar.И это шоу хорошо.Но я не могу использовать клавишу вверх / вниз, чтобы выбрать меню на устройстве.И когда я нажимаю клавишу параметров (Qt :: PositiveSoftKey), также отображается строка меню.И я даже не добавил это в menuBar (), который принадлежит QMainWindow.
Вот мой первый код:
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);
И он ничего не показывает в приложениях.
А вот и моя вторая попытка:
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);
Показывает меню.Но при развертывании на устройстве я не могу использовать клавиатуру для выбора меню.А на симуляторе, если я щелкну в другом месте, кроме пункта QAction, меню потеряно.
Я использую другой подход, используя QPushButton с вертикальной компоновкой.Вот код:
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();
Вот это выглядит:
Хорошо, и это выглядит достаточно хорошо.Но если это 8 кнопок.Если на нем только 2 кнопки, это выглядит так:
выглядит довольно странно, а?Есть ли способ предотвратить это?