Название: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 08:56
В главное меню добавил стандартные пункты: File, Edit, View ...
В меню File и Edit добавил QAction. В третье QMenu не добавил QAction. В четвёртое добавил ... Не знаю, принципиально ли это.
В общем глюк в том, что хочу в программе зайти во вкладку File - не получается. Работает только четвёртая вкладка. После активации четвёртой вкладки можно мышкой без нажатия просмотреть другие. Но только щёлкнешь куда-нибудь вне меню или на название QMenu (пункт QMenuBar, например File), снова только один пункт отвечает.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Syveren от Апрель 22, 2012, 09:29
код покажи. Там случаем не один и тот же QAction во всех вкладках?
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 09:47
С помощью дизайнера создавал. Не один QAction не использовал пока. Натыкал их пару месяцев назад. Сейчас решил перейти к интерфейсу... Могу выложить код, что создал дизайнер, но нужно ли?
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 10:25
Добавил пункты во все разделы главного меню. Первые три раздела (File, Edit, View) не активны, пока не активизируешь меню через остальные разделы. Уходишь из меню - снова первые три раздела не активны.
В QMainWindow ничего кроме меню не изменял (всё, что было добавлено в коде, закомментил.)
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: V1KT0P от Апрель 22, 2012, 12:49
Добавил пункты во все разделы главного меню. Первые три раздела (File, Edit, View) не активны, пока не активизируешь меню через остальные разделы. Уходишь из меню - снова первые три раздела не активны.
В QMainWindow ничего кроме меню не изменял (всё, что было добавлено в коде, закомментил.)
Выложи минимальный код, глянем.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 13:26
int main(int argc, char *argv[]) { QTextCodec *cyrillicCodec = QTextCodec::codecForName("cp1251"); QTextCodec::setCodecForTr(cyrillicCodec); QTextCodec::setCodecForLocale(cyrillicCodec); QTextCodec::setCodecForCStrings(cyrillicCodec);
QApplication a(argc, argv); MainWindow w; QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
class Ui_MainWindow { public: QAction *actionNew; QAction *actionOpen; QAction *actionClose; QAction *action; QAction *action_3; QAction *action_5; QAction *actionUndo; QAction *actionRedo; QAction *actionCut; QAction *actionCopy; QAction *actionPaste; QAction *actionDelete; QAction *actionSelect_all; QAction *actionVocabulary; QAction *actionReview; QAction *actionTest; QAction *actionTexts; QAction *actionRidlles; QWidget *centralWidget; QMenuBar *menuBar; QMenu *menuFile; QMenu *menuEdit; QMenu *menuView; QMenu *menuTools; QMenu *menuWindow; QMenu *menuHelp; QMenu *menuExercises; QToolBar *mainToolBar; QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindow) { if (MainWindow->objectName().isEmpty()) MainWindow->setObjectName(QString::fromUtf8("MainWindow")); MainWindow->resize(635, 392); actionNew = new QAction(MainWindow); actionNew->setObjectName(QString::fromUtf8("actionNew")); actionOpen = new QAction(MainWindow); actionOpen->setObjectName(QString::fromUtf8("actionOpen")); actionClose = new QAction(MainWindow); actionClose->setObjectName(QString::fromUtf8("actionClose")); action = new QAction(MainWindow); action->setObjectName(QString::fromUtf8("action")); action_3 = new QAction(MainWindow); action_3->setObjectName(QString::fromUtf8("action_3")); action_5 = new QAction(MainWindow); action_5->setObjectName(QString::fromUtf8("action_5")); actionUndo = new QAction(MainWindow); actionUndo->setObjectName(QString::fromUtf8("actionUndo")); actionRedo = new QAction(MainWindow); actionRedo->setObjectName(QString::fromUtf8("actionRedo")); actionCut = new QAction(MainWindow); actionCut->setObjectName(QString::fromUtf8("actionCut")); actionCopy = new QAction(MainWindow); actionCopy->setObjectName(QString::fromUtf8("actionCopy")); actionPaste = new QAction(MainWindow); actionPaste->setObjectName(QString::fromUtf8("actionPaste")); actionDelete = new QAction(MainWindow); actionDelete->setObjectName(QString::fromUtf8("actionDelete")); actionSelect_all = new QAction(MainWindow); actionSelect_all->setObjectName(QString::fromUtf8("actionSelect_all")); actionVocabulary = new QAction(MainWindow); actionVocabulary->setObjectName(QString::fromUtf8("actionVocabulary")); actionReview = new QAction(MainWindow); actionReview->setObjectName(QString::fromUtf8("actionReview")); actionTest = new QAction(MainWindow); actionTest->setObjectName(QString::fromUtf8("actionTest")); actionTexts = new QAction(MainWindow); actionTexts->setObjectName(QString::fromUtf8("actionTexts")); actionRidlles = new QAction(MainWindow); actionRidlles->setObjectName(QString::fromUtf8("actionRidlles")); centralWidget = new QWidget(MainWindow); centralWidget->setObjectName(QString::fromUtf8("centralWidget")); MainWindow->setCentralWidget(centralWidget); menuBar = new QMenuBar(MainWindow); menuBar->setObjectName(QString::fromUtf8("menuBar")); menuBar->setGeometry(QRect(0, 0, 635, 20)); menuFile = new QMenu(menuBar); menuFile->setObjectName(QString::fromUtf8("menuFile")); menuEdit = new QMenu(menuBar); menuEdit->setObjectName(QString::fromUtf8("menuEdit")); menuView = new QMenu(menuBar); menuView->setObjectName(QString::fromUtf8("menuView")); menuTools = new QMenu(menuBar); menuTools->setObjectName(QString::fromUtf8("menuTools")); menuWindow = new QMenu(menuBar); menuWindow->setObjectName(QString::fromUtf8("menuWindow")); menuHelp = new QMenu(menuBar); menuHelp->setObjectName(QString::fromUtf8("menuHelp")); menuExercises = new QMenu(menuBar); menuExercises->setObjectName(QString::fromUtf8("menuExercises")); MainWindow->setMenuBar(menuBar); mainToolBar = new QToolBar(MainWindow); mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(MainWindow); statusBar->setObjectName(QString::fromUtf8("statusBar")); MainWindow->setStatusBar(statusBar);
menuBar->addAction(menuFile->menuAction()); menuBar->addAction(menuEdit->menuAction()); menuBar->addAction(menuView->menuAction()); menuBar->addAction(menuExercises->menuAction()); menuBar->addAction(menuTools->menuAction()); menuBar->addAction(menuWindow->menuAction()); menuBar->addAction(menuHelp->menuAction()); menuFile->addAction(actionNew); menuFile->addAction(actionOpen); menuFile->addAction(actionClose); menuFile->addAction(action); menuFile->addAction(action_5); menuFile->addSeparator(); menuEdit->addAction(actionUndo); menuEdit->addAction(actionRedo); menuEdit->addSeparator(); menuEdit->addAction(actionCut); menuEdit->addAction(actionCopy); menuEdit->addAction(actionPaste); menuEdit->addAction(actionDelete); menuEdit->addAction(actionSelect_all); menuExercises->addAction(actionVocabulary); menuExercises->addAction(actionReview); menuExercises->addAction(actionTest); menuExercises->addAction(actionTexts); menuExercises->addAction(actionRidlles);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow); } // setupUi
void retranslateUi(QMainWindow *MainWindow) { MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8)); actionNew->setText(QApplication::translate("MainWindow", "New", 0, QApplication::UnicodeUTF8)); actionOpen->setText(QApplication::translate("MainWindow", "Open", 0, QApplication::UnicodeUTF8)); actionClose->setText(QApplication::translate("MainWindow", "Close", 0, QApplication::UnicodeUTF8)); action->setText(QApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", 0, QApplication::UnicodeUTF8)); action_3->setText(QApplication::translate("MainWindow", "-", 0, QApplication::UnicodeUTF8)); action_5->setText(QApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214 \320\272\320\260\320\272...", 0, QApplication::UnicodeUTF8)); actionUndo->setText(QApplication::translate("MainWindow", "Undo", 0, QApplication::UnicodeUTF8)); actionRedo->setText(QApplication::translate("MainWindow", "Redo", 0, QApplication::UnicodeUTF8)); actionCut->setText(QApplication::translate("MainWindow", "Cut", 0, QApplication::UnicodeUTF8)); actionCopy->setText(QApplication::translate("MainWindow", "Copy", 0, QApplication::UnicodeUTF8)); actionPaste->setText(QApplication::translate("MainWindow", "Paste", 0, QApplication::UnicodeUTF8)); actionDelete->setText(QApplication::translate("MainWindow", "Delete", 0, QApplication::UnicodeUTF8)); actionSelect_all->setText(QApplication::translate("MainWindow", "Select all", 0, QApplication::UnicodeUTF8)); actionVocabulary->setText(QApplication::translate("MainWindow", "Vocabulary", 0, QApplication::UnicodeUTF8)); actionReview->setText(QApplication::translate("MainWindow", "Review", 0, QApplication::UnicodeUTF8)); actionTest->setText(QApplication::translate("MainWindow", "Test", 0, QApplication::UnicodeUTF8)); actionTexts->setText(QApplication::translate("MainWindow", "Texts", 0, QApplication::UnicodeUTF8)); actionRidlles->setText(QApplication::translate("MainWindow", "Ridlles", 0, QApplication::UnicodeUTF8)); menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8)); menuEdit->setTitle(QApplication::translate("MainWindow", "Edit", 0, QApplication::UnicodeUTF8)); menuView->setTitle(QApplication::translate("MainWindow", "View", 0, QApplication::UnicodeUTF8)); menuTools->setTitle(QApplication::translate("MainWindow", "Tools", 0, QApplication::UnicodeUTF8)); menuWindow->setTitle(QApplication::translate("MainWindow", "Window", 0, QApplication::UnicodeUTF8)); menuHelp->setTitle(QApplication::translate("MainWindow", "Help", 0, QApplication::UnicodeUTF8)); menuExercises->setTitle(QApplication::translate("MainWindow", "Exercises", 0, QApplication::UnicodeUTF8)); } // retranslateUi
};
namespace Ui { class MainWindow: public Ui_MainWindow {}; } // namespace Ui
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: V1KT0P от Апрель 22, 2012, 13:52
int main(int argc, char *argv[]) { QTextCodec *cyrillicCodec = QTextCodec::codecForName("cp1251"); QTextCodec::setCodecForTr(cyrillicCodec); QTextCodec::setCodecForLocale(cyrillicCodec); QTextCodec::setCodecForCStrings(cyrillicCodec);
QApplication a(argc, argv); MainWindow w; QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
class Ui_MainWindow { public: QAction *actionNew; QAction *actionOpen; QAction *actionClose; QAction *action; QAction *action_3; QAction *action_5; QAction *actionUndo; QAction *actionRedo; QAction *actionCut; QAction *actionCopy; QAction *actionPaste; QAction *actionDelete; QAction *actionSelect_all; QAction *actionVocabulary; QAction *actionReview; QAction *actionTest; QAction *actionTexts; QAction *actionRidlles; QWidget *centralWidget; QMenuBar *menuBar; QMenu *menuFile; QMenu *menuEdit; QMenu *menuView; QMenu *menuTools; QMenu *menuWindow; QMenu *menuHelp; QMenu *menuExercises; QToolBar *mainToolBar; QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindow) { if (MainWindow->objectName().isEmpty()) MainWindow->setObjectName(QString::fromUtf8("MainWindow")); MainWindow->resize(635, 392); actionNew = new QAction(MainWindow); actionNew->setObjectName(QString::fromUtf8("actionNew")); actionOpen = new QAction(MainWindow); actionOpen->setObjectName(QString::fromUtf8("actionOpen")); actionClose = new QAction(MainWindow); actionClose->setObjectName(QString::fromUtf8("actionClose")); action = new QAction(MainWindow); action->setObjectName(QString::fromUtf8("action")); action_3 = new QAction(MainWindow); action_3->setObjectName(QString::fromUtf8("action_3")); action_5 = new QAction(MainWindow); action_5->setObjectName(QString::fromUtf8("action_5")); actionUndo = new QAction(MainWindow); actionUndo->setObjectName(QString::fromUtf8("actionUndo")); actionRedo = new QAction(MainWindow); actionRedo->setObjectName(QString::fromUtf8("actionRedo")); actionCut = new QAction(MainWindow); actionCut->setObjectName(QString::fromUtf8("actionCut")); actionCopy = new QAction(MainWindow); actionCopy->setObjectName(QString::fromUtf8("actionCopy")); actionPaste = new QAction(MainWindow); actionPaste->setObjectName(QString::fromUtf8("actionPaste")); actionDelete = new QAction(MainWindow); actionDelete->setObjectName(QString::fromUtf8("actionDelete")); actionSelect_all = new QAction(MainWindow); actionSelect_all->setObjectName(QString::fromUtf8("actionSelect_all")); actionVocabulary = new QAction(MainWindow); actionVocabulary->setObjectName(QString::fromUtf8("actionVocabulary")); actionReview = new QAction(MainWindow); actionReview->setObjectName(QString::fromUtf8("actionReview")); actionTest = new QAction(MainWindow); actionTest->setObjectName(QString::fromUtf8("actionTest")); actionTexts = new QAction(MainWindow); actionTexts->setObjectName(QString::fromUtf8("actionTexts")); actionRidlles = new QAction(MainWindow); actionRidlles->setObjectName(QString::fromUtf8("actionRidlles")); centralWidget = new QWidget(MainWindow); centralWidget->setObjectName(QString::fromUtf8("centralWidget")); MainWindow->setCentralWidget(centralWidget); menuBar = new QMenuBar(MainWindow); menuBar->setObjectName(QString::fromUtf8("menuBar")); menuBar->setGeometry(QRect(0, 0, 635, 20)); menuFile = new QMenu(menuBar); menuFile->setObjectName(QString::fromUtf8("menuFile")); menuEdit = new QMenu(menuBar); menuEdit->setObjectName(QString::fromUtf8("menuEdit")); menuView = new QMenu(menuBar); menuView->setObjectName(QString::fromUtf8("menuView")); menuTools = new QMenu(menuBar); menuTools->setObjectName(QString::fromUtf8("menuTools")); menuWindow = new QMenu(menuBar); menuWindow->setObjectName(QString::fromUtf8("menuWindow")); menuHelp = new QMenu(menuBar); menuHelp->setObjectName(QString::fromUtf8("menuHelp")); menuExercises = new QMenu(menuBar); menuExercises->setObjectName(QString::fromUtf8("menuExercises")); MainWindow->setMenuBar(menuBar); mainToolBar = new QToolBar(MainWindow); mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(MainWindow); statusBar->setObjectName(QString::fromUtf8("statusBar")); MainWindow->setStatusBar(statusBar);
menuBar->addAction(menuFile->menuAction()); menuBar->addAction(menuEdit->menuAction()); menuBar->addAction(menuView->menuAction()); menuBar->addAction(menuExercises->menuAction()); menuBar->addAction(menuTools->menuAction()); menuBar->addAction(menuWindow->menuAction()); menuBar->addAction(menuHelp->menuAction()); menuFile->addAction(actionNew); menuFile->addAction(actionOpen); menuFile->addAction(actionClose); menuFile->addAction(action); menuFile->addAction(action_5); menuFile->addSeparator(); menuEdit->addAction(actionUndo); menuEdit->addAction(actionRedo); menuEdit->addSeparator(); menuEdit->addAction(actionCut); menuEdit->addAction(actionCopy); menuEdit->addAction(actionPaste); menuEdit->addAction(actionDelete); menuEdit->addAction(actionSelect_all); menuExercises->addAction(actionVocabulary); menuExercises->addAction(actionReview); menuExercises->addAction(actionTest); menuExercises->addAction(actionTexts); menuExercises->addAction(actionRidlles);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow); } // setupUi
void retranslateUi(QMainWindow *MainWindow) { MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8)); actionNew->setText(QApplication::translate("MainWindow", "New", 0, QApplication::UnicodeUTF8)); actionOpen->setText(QApplication::translate("MainWindow", "Open", 0, QApplication::UnicodeUTF8)); actionClose->setText(QApplication::translate("MainWindow", "Close", 0, QApplication::UnicodeUTF8)); action->setText(QApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", 0, QApplication::UnicodeUTF8)); action_3->setText(QApplication::translate("MainWindow", "-", 0, QApplication::UnicodeUTF8)); action_5->setText(QApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214 \320\272\320\260\320\272...", 0, QApplication::UnicodeUTF8)); actionUndo->setText(QApplication::translate("MainWindow", "Undo", 0, QApplication::UnicodeUTF8)); actionRedo->setText(QApplication::translate("MainWindow", "Redo", 0, QApplication::UnicodeUTF8)); actionCut->setText(QApplication::translate("MainWindow", "Cut", 0, QApplication::UnicodeUTF8)); actionCopy->setText(QApplication::translate("MainWindow", "Copy", 0, QApplication::UnicodeUTF8)); actionPaste->setText(QApplication::translate("MainWindow", "Paste", 0, QApplication::UnicodeUTF8)); actionDelete->setText(QApplication::translate("MainWindow", "Delete", 0, QApplication::UnicodeUTF8)); actionSelect_all->setText(QApplication::translate("MainWindow", "Select all", 0, QApplication::UnicodeUTF8)); actionVocabulary->setText(QApplication::translate("MainWindow", "Vocabulary", 0, QApplication::UnicodeUTF8)); actionReview->setText(QApplication::translate("MainWindow", "Review", 0, QApplication::UnicodeUTF8)); actionTest->setText(QApplication::translate("MainWindow", "Test", 0, QApplication::UnicodeUTF8)); actionTexts->setText(QApplication::translate("MainWindow", "Texts", 0, QApplication::UnicodeUTF8)); actionRidlles->setText(QApplication::translate("MainWindow", "Ridlles", 0, QApplication::UnicodeUTF8)); menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8)); menuEdit->setTitle(QApplication::translate("MainWindow", "Edit", 0, QApplication::UnicodeUTF8)); menuView->setTitle(QApplication::translate("MainWindow", "View", 0, QApplication::UnicodeUTF8)); menuTools->setTitle(QApplication::translate("MainWindow", "Tools", 0, QApplication::UnicodeUTF8)); menuWindow->setTitle(QApplication::translate("MainWindow", "Window", 0, QApplication::UnicodeUTF8)); menuHelp->setTitle(QApplication::translate("MainWindow", "Help", 0, QApplication::UnicodeUTF8)); menuExercises->setTitle(QApplication::translate("MainWindow", "Exercises", 0, QApplication::UnicodeUTF8)); } // retranslateUi
};
namespace Ui { class MainWindow: public Ui_MainWindow {}; } // namespace Ui
И что сложно выложить весь проект, второй файл это сгенерированный дизайнером. Я тоже так могу, вместо работающего кода скину например гифку в которой все работает.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 14:56
Нашёл ошибку. Спасибо. Простимулировали. Плохой я. Слов нет. Влом всё выкладывать. Опять же: плохой я. Там не мало... Ошибка была в том, что создал тип, наследуемый от QWidget, форму ui в итоге не сделал, передумал делать. Объект создаю и он у меня видимо перекрывал выползающее меню. Поменял тип его на QObject. Всё работает.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: V1KT0P от Апрель 22, 2012, 15:06
Нашёл ошибку. Спасибо. Простимулировали. Плохой я. Слов нет. Влом всё выкладывать. Опять же: плохой я. Там не мало... Ошибка была в том, что создал тип, наследуемый от QWidget, форму ui в итоге не сделал, передумал делать. Объект создаю и он у меня видимо перекрывал выползающее меню. Поменял тип его на QObject. Всё работает.
Как я понял из твоих слов ошибка в том коде который ты не показал. А телепатов на этом форуме к сожалению нету...
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 16:05
Всё правильно. Не спорю. Сам виноват. Код достаточно большой. Один раз выложил исходники, а их 2 человека просмотрело. А эту ошибку я мог бы совершить в любом месте (теперь буду аккуратней), чтобы найти подобные ошибки, нужно смотреть весь код, если с ним не знаком.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: V1KT0P от Апрель 22, 2012, 16:08
Код достаточно большой. Один раз выложил исходники, а их 2 человека просмотрело.
Поэтому и просят всегда минимальный нерабочий код. Ибо разбираться в большом чужом коде всякое желание пропадает.
Название: Re: QMenuBar. Не все пункты Bar правильно реагируют на мышь.
Отправлено: Андрей от Апрель 22, 2012, 16:09
Я собственно нашёл ошибку, когда искал минимально нерабочий код.))) Но не всегда можно найти минимально нерабочий код....
|