crossplatform.ru

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


  Ответ в Панель инструментов в прикрепляемом окне
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 2.10.2008, 17:49
 
Цитата(trdm @ 2.10.2008, 20:27) *
проект на всяк присобачиваю..
как-то не звучит это слово, лучше: прикладываю
AD Дата 2.10.2008, 17:07
 
Цитата(trdm)
блин, меню туда побыстрому присобачить неудалось. а так работает...
проект на всяк присобачиваю..

Благодаря данному примеру у меня получилось сделать и с QMainWindow! :) Большое спасибо! :) Нашел ошибку в своем предыдущем коде, поправил и все заработало. Эврика.
Итак, вывод - проблему можно решить 2 способами, через QFrame с QLayout или через QMainWindow.

Вот правильный код решения данной проблемы
ReliefGraphics::ReliefGraphics(QWidget *parent): toolBar(0), settings(0)
{
    setupUi(this);

    toolBar = new QToolBar(reliefDisplay);
    toolBar -> setObjectName(QString::fromUtf8("toolBar"));
    toolBar -> setToolButtonStyle(Qt::ToolButtonIconOnly);
    toolBar -> setOrientation(Qt::Vertical);
    toolBar -> setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    toolBar -> setVisible(true);
    addIconToolbar();
    reliefDisplay -> addToolBar(Qt::LeftToolBarArea, toolBar);
    setWidget(reliefDisplay);

    settings = new PlotSettings();
}

ReliefGraphics::~ReliefGraphics()
{
    if(toolBar) delete toolBar;
    if(settings) delete settings;
}

/// Добавление иконок в панель инструментов
void ReliefGraphics::addIconToolbar()
{
    QString text = "Save";
    QAction* save_action = new QAction(QIcon("./Images/save.png"), text, reliefDisplay);
    text = "Repair";
    QAction* repair_action = new QAction(QIcon("./Images/repair.png"), text, reliefDisplay);

    toolBar -> addAction(save_action);
    toolBar -> addAction(repair_action);
}


QAction* save_action = new QAction(QIcon("./Images/save.png"), text, reliefDisplay); - вот строка, где кроилась ошибка. До этого у меня последним параметром был this!!!
trdm Дата 2.10.2008, 16:27
  блин, меню туда побыстрому присобачить неудалось. а так работает...
проект на всяк присобачиваю..
AD Дата 2.10.2008, 16:20
 
Цитата
Как насчет такого подхода? :)

попробую.
trdm Дата 2.10.2008, 16:12
  Как насчет такого подхода? :)
AD Дата 2.10.2008, 15:40
 
Цитата(trdm @ 2.10.2008, 16:37) *
короче весь вопрос в том как присобачить тулбар на доковое окошко?

Изначально, да. Теперь видоизменился: как присобачить mainwindow в dockwidget?
trdm Дата 2.10.2008, 15:37
  короче весь вопрос в том как присобачить тулбар на доковое окошко?
AD Дата 2.10.2008, 15:32
 
Цитата
нарисуй, че убрать хочешь..

Ta dam

[attachment=264:test_picture1.JPG]
trdm Дата 2.10.2008, 15:22
  нарисуй, че убрать хочешь..
AD Дата 2.10.2008, 15:03
 
Цитата(trdm @ 2.10.2008, 14:22) *
Может стоит просто откомпоновать тулбар через лайоты?
Сильно подозреваю, что автокрепежка и автовыравнивание тулюаров реализованно только для QMainWindow - подобных окошек, а в остальных лучше компоновкой работать с ними.

Нет, компоновщики тут не помогут. Посоветовали использовать QMainWindow! Так и сделал - возник другой вопрос: как заставить этот внутренний QMainWindow отображаться внутри вложенного в главное окно приложения доквиджета? Сейчас эта QMainWindow отображается как еще одно окно, чего мне совсем не надо.

Вот код:
ReliefGraphics::ReliefGraphics(QWidget *parent): toolBar(0), settings(0)
{
    setupUi(this);

    toolBar = new QToolBar(reliefDisplay);
    toolBar -> setObjectName(QString::fromUtf8("toolBar"));
    toolBar -> setToolButtonStyle(Qt::ToolButtonIconOnly);
    toolBar -> setOrientation(Qt::Vertical);
    toolBar -> setAllowedAreas(Qt::LeftToolBarArea);
    addIconToolbar();
    reliefDisplay -> addToolBar(Qt::LeftToolBarArea, toolBar);
    reliefDisplay -> setVisible(true);
    setWidget(reliefDisplay);

    settings = new PlotSettings();
}

ReliefGraphics::~ReliefGraphics()
{
    if(toolBar) delete toolBar;
    if(settings) delete settings;
}

/// Добавление иконок в панель инструментов
void ReliefGraphics::addIconToolbar()
{
    QString text = "Save";
    QAction* save_action = new QAction(QIcon("./Images/save.png"), text, this);
    text = "Repair";
    QAction* repair_action = new QAction(QIcon("./Images/repair.png"), text, this);

    toolBar -> addAction(save_action);
    toolBar -> addAction(repair_action);
}


class Ui_VerticalGraphicClass
{
public:
    QGridLayout *gridLayout;
    QMainWindow *reliefDisplay;

public:
    void setupUi(QDockWidget *ReliefClass);                    // setupUi
    void retranslateUi(QDockWidget *ReliefClass);            // retranslateUi
};

namespace Ui
{
    class VerticalGraphicClass: public Ui_VerticalGraphicClass {};
} // namespace Ui


Параллельные вопрос: как убрать у этого mainwindow строку заголовка?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 21:41