Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: #pragma от Декабрь 12, 2009, 01:26



Название: [Решено]Как сделать QTextEdit,принадлежащий QDockWidget,невидимым до события?
Отправлено: #pragma от Декабрь 12, 2009, 01:26
Есть такая функция
Код
C++ (Qt)
 void MainWindow::createDockWindow()
 {
    QFont font;
    font.setFixedPitch(true);
    font.setPointSize(10);
    font.setStyleHint(QFont::System,QFont::PreferAntialias);
 
    QTextCharFormat format;
    format.setForeground(Qt::red);
 
    buildLog->setReadOnly(true);
    buildLog->setWordWrapMode(QTextOption::WrapAnywhere);
    buildLog->setFont(font);
    buildLog->mergeCurrentCharFormat(format);
 
    addDockWidget(Qt::RightDockWidgetArea, dock);
    dock->setWidget(buildLog);
    fileMenu->addAction(dock->toggleViewAction());
 }
И нужно ,чтобы buildLog появлялся только по сигналу.Как его сделать полностью невидимым? Я перепробовал функции setVisible,setEnabled,hide,setHidden но ничего не помогает - на QDockWidget-е всё равно видны крестик закрытия ещё значки,причём они наезжают на другие элементы окна.Сделать этот элемент полностью невидимым не получается.  Эта функция вызывается в самом начале,наверное,можно по событию вызывать addDockWidget,но это мне кажется немного неестественным. Может,есть какой-то другой способ?


Название: Re: Как сделать QTextEdit,принадлежащий QDockWidget,полностью невидимым до события?
Отправлено: Dendy от Декабрь 12, 2009, 04:08
Крестик и другие элементы не есть часть внутреннего окна, это кусочки самого дока, скрыть их можно установкой флагов QDockWidget::DockWidgetFeature. Что именно вы хотите сделать невидимым? Как вариант можно прятать и показывать весь док.


Название: Re: Как сделать QTextEdit,принадлежащий QDockWidget,полностью невидимым до события?
Отправлено: aarlan от Декабрь 12, 2009, 15:25
Не совсем понятно, что ты хочешь - сделать невидимым buildLog, при это dock видимый, а по какому-то сигналу(какому?) сделать его видимым?


Название: Re: Как сделать QTextEdit,принадлежащий QDockWidget,полностью невидимым до события?
Отправлено: #pragma от Декабрь 12, 2009, 19:10
Крестик и другие элементы не есть часть внутреннего окна, это кусочки самого дока, скрыть их можно установкой флагов QDockWidget::DockWidgetFeature. Что именно вы хотите сделать невидимым? Как вариант можно прятать и показывать весь док.
Спасибо,я поищу функции для этого.
Не совсем понятно, что ты хочешь - сделать невидимым buildLog, при это dock видимый, а по какому-то сигналу(какому?) сделать его видимым?
Его (buildLog) нужно показывать только тогда,когда есть сообщение пользователю,а точнее - ошибка,генерируемая другой программой.А убирать его каждый раз перед запуском этой программы.Я думаю,что нет надобности в отображении поля для ошибок/сообщений,когда их нет. В-общем,это специфика моей программы,если интересно,могу дать ссылку,исходники открыты(хотя и убоги,я же просто учусь).

Все получилось,спасибо Dendy за подсказку.