Russian Qt Forum
Ноябрь 27, 2024, 15:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавляю QToolbar на QLayoutе в QWidget, а он ведет себя как "картинка"  (Прочитано 4528 раз)
tguglanaklona
Гость
« : Сентябрь 20, 2010, 11:49 »

Добавляю QToolbar на QLayoutе в QWidget, а он ведет себя как "картинка" (нажать на кнопки не выходит даже "визуально"), мой мозг уже вынесен, помогите  Улыбающийся

P.S.: при этом корректно работает toolbar в закомментированном //sample но открывается соответственно в новом окне QWidget а мне нужно в текущем..



clonewidget.h

class CloneWidget : public QDockWidget, public CloneWidgetClass
{
   Q_OBJECT

public:
   CloneWidget(QWidget *parent);
   ~CloneWidget();

   ...

   QToolBar toolbar;
QVBoxLayout lay0t;

    QAction actionNew;

   ...
private slots:

   void on_newMenu_clicked();
   ...

};

clonewidget.cpp

CloneWidget::CloneWidget(QWidget *parent)
   : QDockWidget(parent), applicationName("Parser Window")
, toolbar("Macros Editor Toolbar", this), lay0t(this), actionNew(this)...
{
   ...
}

void CloneWidget::CreateMacroWindow()
{
   setupUi(this);

      this->setFloating(1);   
      toolbar.setFloatable(1);

      actionNew.setText("&New");
      toolbar.addAction(&actionNew);
   
      setLayout(&lay0t);
      lay0t.addWidget(&toolbar);
   
actionNew.setEnabled(true);
   connect(&actionNew,SIGNAL(triggered()),this,SLOT(on_newMenu_clicked()));
...

//sample
/*
QWidget * widget = new QWidget;
QVBoxLayout * layout = new QVBoxLayout( widget );
layout->addWidget( &toolbar );
this->setWidget( widget );
*/
...
   this->adjustSize();

}

xxx.h

CloneWidget wndMacro;

xxx.cpp

wndMacro.CreateMacroWindow();
mainWnd->addDockWidget(Qt::NoDockWidgetArea, &wndMacro);
wndMacro.setFloating(1);
wndMacro.setWindowModality(Qt::ApplicationModal);
wndMacro.show();


Записан
EhTemka
Гость
« Ответ #1 : Сентябрь 20, 2010, 21:24 »

Попробуй в //sample написать QWidget * widget = new QWidget(this);
И вообще, почему бы сам toolbar не установить в качестве виджета для дока: this->addWidget(&toolbar)
« Последнее редактирование: Сентябрь 20, 2010, 21:26 от EhTemka » Записан
tguglanaklona
Гость
« Ответ #2 : Сентябрь 21, 2010, 09:37 »

В DockWidget-е нет такой функции addWidget только setWidget, которая делает мне новое окно соответственно без всего ГУИ, которое в данное уже запихнуто Грустный Мне нужно и ГУИ оставить и тулбар к нему засунуть Грустный

Еще У меня изначально наследником моего СloneWidget wndMacro; не является QMainWindow, а Win32-овое окошко. Может в этом дело? Как это разрулить вообще можно? У меня тот же код запускается из отдельной программки с QMainWindow и работает нормально Грустный
Записан
EhTemka
Гость
« Ответ #3 : Сентябрь 22, 2010, 09:47 »

Да, вы правы setWidget - опечатался. Насколько я понял из кода CloneWidget - это наследник QDockWidget и CloneWidgetClass. Или под наследником вы понимаете что-то другое. У меня приведенный код работает корректно. Может выложите код с вашим Win32-вым окошком?
Записан
tguglanaklona
Гость
« Ответ #4 : Сентябрь 22, 2010, 15:06 »

Как то разрулилось. Спасибо за поддержку))) Пока еще не поняли, где была ошибка, а разрулилось простым перекопированием того же самого текста второй раз в новое место. Может, баг... Будет время - разберусь все-таки, отчего оно лажало  Непонимающий  Выслать, к сожалению, не могу (нудно отсоединять его от проги). Блин, в отдельном окошке действительно тоже все работало Улыбающийся
Записан
borik120
Гость
« Ответ #5 : Сентябрь 23, 2010, 18:52 »

только что решил у себя анологичную проблему. дело было в том что обьект(кнопка) размещался за QGridLayout, который в этом месте был пуст, но существовал.
Записан
tguglanaklona
Гость
« Ответ #6 : Сентябрь 27, 2010, 12:46 »

Пасиб. Проверю  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 21.