crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Неактивные кнопки меню
NordWest
  опции профиля:
сообщение 8.4.2009, 0:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 86
Регистрация: 26.11.2008
Пользователь №: 433

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте.
Проблема с кнопками в меню MainWindow. В процессе разработки обнаружился такой глюк. Несколько пунктов меню: file, view, frame и tools. Но отзывается на подведение мыши и клик только последняя кнопка. Остальные не становятся выпуклыми и никак не реагируют.
Но если открыть последнее меню, то можно из него передвигаться в остальные. Кривой такой способ работы получается.

В результате попыток выявления источника, влияющего на возникновение проблемы, пробовал отключать участки кода. В результате нашел ту часть кода, при удалении которой, меню оживает.
Связана она с моим первым ui-диалогом, который имеет одно поле QLineEdit и две кнопки: Ok и Cancel.

Но по порядку...

Для начала MainWindow:
MainWindow::MainWindow()
{
    setWindowTitle("stimpro");
    setMenu();
    setWidgets();
...    
    imgLabel->installEventFilter(this);
    this->installEventFilter(this);
};


Собственно методы setMenu() и setWidget() имеют смысл, поэтому немного сократил.

Теперь setMenu():
    
fileMenu = menuBar()->addMenu(tr("file"));// добавляем меню file
...
viewMenu = menuBar()->addMenu(tr("view"));
...
frameMenu = menuBar()->addMenu(tr("frame"));
...
toolMenu = menuBar()->addMenu(tr("Tools"));
...


Наполнение меню похоже также несущественно.

И наконец setWidget(), в котором создается объект типа newNameDlg:
nName = new newNameDlg(this);
nName->formWidget->hide();
connect(nName, SIGNAL(signalExit()), this, SLOT(slotNewInsExit()));


В самом классе мне не за что зацепиться. Нужен был диалог и я его создал как попроще. Видимо я криво связал сигналы со слотами...

"newNameDlg.h"
#include <QWidget>
#include <QDialog>

class QLabel;
class QPushButton;
class QLineEdit;

class newNameDlg : public QWidget
{
    Q_OBJECT
signals:
    void signalExit();
public:
    newNameDlg(QWidget *parent = 0);
    QWidget *formWidget;

private slots:
    void on_buttonBox_accepted();
public:
    QLineEdit *ui_newNameLine;
};


"newNameDlg.cpp"
#include <QtUiTools>
#include <QtGui>

#include "newNameDlg.h"

newNameDlg::newNameDlg(QWidget *parent)
    : QWidget(parent)
{
    QUiLoader loader;

    QFile file("newNameDlg.ui");
    file.open(QFile::ReadOnly);
    formWidget = loader.load(&file, this);
    formWidget->show();
    file.close();

    ui_newNameLine = qFindChild<QLineEdit*>(this, "nameIns");

    QMetaObject::connectSlotsByName(this);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(formWidget);
    setLayout(layout);
}

void newNameDlg::on_buttonBox_accepted(){emit signalExit();}


Такая вот история.

Сообщение отредактировал Admin - 8.4.2009, 8:24
Причина редактирования: Подредактировал тэг code и добавил expand
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
NordWest
  опции профиля:
сообщение 8.4.2009, 10:39
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 86
Регистрация: 26.11.2008
Пользователь №: 433

Спасибо сказали: 1 раз(а)




Репутация:   0  


Отлично! Заработало и у меня. Большое спасибо!)

Цитата(igor_bogomolov @ 8.4.2009, 11:23) *
newNameDlg это же диалоговае окно, я правильно понимаю, а не виджет на форме MainWindow?


Была необходимость в простом диалоговом окне, но получилось непойми что. Я у QDesigner'e состряпал форму и выставил в ней свойства изходя из своего представления. Ну и пример какой-то посмотрел. По мне, так окошко, которое по show() и hide() работает, является виджетом. А диалоговое окно создается в процедуре и doModal() какое-нибудь делает или exec().

Цитата(Litkevich Yuriy @ 8.4.2009, 11:34) *
не обязан, у меня есть много диалоговых окон наследников QWidget, потому-что мне ненужна функциональность QDialog. И ни каких проблем.


Но баг ушел тем не менее при замене QWidget -> QDialog...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- NordWest   Неактивные кнопки меню   8.4.2009, 0:35
- - igor_bogomolov   Разобрался. Если конечно я все провельно понял....   8.4.2009, 10:23
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 8.4.2009, 14:23) ...   8.4.2009, 10:34
- - NordWest   Отлично! Заработало и у меня. Большое спасибо...   8.4.2009, 10:39
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 8.4.2009, 11:34)...   8.4.2009, 10:44
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 8.4.2009, 14:44) ...   8.4.2009, 11:03
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 8.4.2009, 12:00)...   8.4.2009, 11:26
- - Litkevich Yuriy   igor_bogomolov, просто любопытно пощупать, а време...   8.4.2009, 11:43
- - igor_bogomolov   Да незачто. Самому ведь интерестно. Если бага, то ...   8.4.2009, 11:49
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 8.4.2009, 15:49) ...   8.4.2009, 11:52
- - igor_bogomolov   Ок Если о баге будете сообщать, отпишитесь пожалуй...   8.4.2009, 11:55
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 8.4.2009, 15:26) ...   8.4.2009, 21:43
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 8.4.2009, 22:43)...   8.4.2009, 22:42
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 9.4.2009, 2:42) Т...   8.4.2009, 23:07
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 9.4.2009, 0:07) ...   8.4.2009, 23:27


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 22:35