Ну собственно вот картинки на которых видна проблема:
[attachment=113:1.JPG]
[attachment=114:2.JPG]
На первой картинке слева виджет с QTreeWidget прикреплен. Как сделать, чтобы этот виджет был явно виден?
Вот код создания прикрепляемого виджета:
/// Создание прикрепляемых виджетов
void TLV::createDockWidgets()
{
QDockWidget* dock = new QDockWidget(this);
dock -> setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
treePhaseView = new QTreeWidget(this);
treePhaseView->setObjectName(QString::fromUtf8("treePhaseView"));
treePhaseView->headerItem()->setText(0, QApplication::translate("TLVClass", "", 0, QApplication::UnicodeUTF8));
dock -> setWidget(treePhaseView);
addDockWidget(Qt::LeftDockWidgetArea, dock);
}
/// Инициализация и установка нужных размеров окна приложения
void Ui_TLVClass::setupUi(QMainWindow *TLVClass)
{
if (TLVClass->objectName().isEmpty())
TLVClass->setObjectName(QString::fromUtf8("TLVClass"));
TLVClass->resize(942, 776);
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(TLVClass->sizePolicy().hasHeightForWidth());
TLVClass->setSizePolicy(sizePolicy);
TLVClass->setMinimumSize(QSize(200, 200));
centralWidget = new QWidget(TLVClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
gridLayout = new QGridLayout(centralWidget);
gridLayout->setSpacing(6);
gridLayout->setMargin(11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
trackView = new QTrackWidget(centralWidget);
trackView->setObjectName(QString::fromUtf8("trackView"));
sizePolicy.setHeightForWidth(trackView->sizePolicy().hasHeightForWidth());
trackView->setSizePolicy(sizePolicy);
trackView->setMinimumSize(QSize(160, 200));
gridLayout->addWidget(trackView, 0, 0, 1, 1);
TLVClass->setCentralWidget(centralWidget);
menuBar = new QMenuBar(TLVClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 942, 21));
TLVClass->setMenuBar(menuBar);
retranslateUi(TLVClass);
QMetaObject::connectSlotsByName(TLVClass);
}
/// Оглавление окна приложения
void Ui_TLVClass::retranslateUi(QMainWindow *TLVClass)
{
TLVClass->setWindowTitle(QApplication::translate("TLVClass", "TransasLogView", 0, QApplication::UnicodeUTF8));
Q_UNUSED(TLVClass);
}
Другого решения не нашел, как делать через дизайнер. Но теперь у меня не получается добиться того, чтобы QWidget, на котором будет траектория полета (должен быть самым большим виджетом), QTreeWidget (дерево этапов полета), QDockWidget (в котором этом дерево размещается) правильно размещались в лэйауте. Помогите, пожалуйста!
ну подсмотри как дизайнер это делает (uic my.ui -o my.h)
а файлик прикрепить можешь, который ui, и описать как бы ты хотел?
а форму можешь выложить?
во-превых, добавь компоновщик в доквиджет, выдели доквиджет и нажми вертикальный или горизонтальный компоновщик.
во вторых, (ща гляну как в дизайнере зделать )
Убей лишние компоновщики и поновой:
во-превых,
выдели вложеный виджет в доквиджет, установи требуемый МАКСИМАЛЬНЫЙ размер по горизонтали, установи политику по горизонтали фиксированой;
во-вторых,
выдели доквиджет, нажми кнопку подогнать размер, установи политику горизонтального размера фиксированой;
в-третьих,
Выдели виджет родительский для дока и твоего графика, нажми кнопку горизонтальной компоновки.
Поидее все должно стать путем, навсякий случай тестовый ГУЙ
dock.zip ( 651 байт )
: 205
тот на который ты доквиджет кладешь
короче косячек какой-то либо в дизайнере либо в моей голове. Док в приведенном мной выше файле лежит в центральном виджете, что неправильно, его надо положить на сам майнвиндоу.
я это сделал руками с помощью текстового редактора, ui-файл отредактировал.
И не врублюсь как это в дизайнере сделать.
а как сделал?
вот я переделал в редакторе (текстовом)
dock.zip ( 768 байт )
: 191
максимальный размер удалил и политику размера сделал растягиваемую, помоему получилось то что надо.
Но про дизайнер ниче непойму:
а толку то, если ты
allowedAreas
dockWidgetArea
в дизайнере устанавливаешь, то он не меняет своего поведения, т.е. если ты в предпросмотре доквиджет сделаешь плавающим, то он потом парковаться не вкакую не хочет.
А если как я подправляя файл руками. то нормально и с размером тоже нормально, можно соорудить простенький по моей методе, и сгенерит исходник, а там уже посмотреть как их програмно надо делать.
---
разница в генерируемом с++ файле только в одной строчке:
dockWidget = new QDockWidget(centralwidget);
dockWidget = new QDockWidget(MainWindow);
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)