Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: crocus от Март 21, 2006, 15:57



Название: Вопрос по QDockWidget
Отправлено: crocus от Март 21, 2006, 15:57
У меня при нажатиии на кнопку появляется dock, при каждом последующем нажатии появляется еще один и так далее. С QDialog все просто
Код:

if ( dialog.exec() != QDialog::Accepted )

А как сделать тоже самое для QDockWidget???


Название: Re: Вопрос по QDockWidget
Отправлено: BaltikS от Март 21, 2006, 16:02
Цитата: "crocus"
У меня при нажатиии на кнопку появляется dock, при каждом последующем нажатии появляется еще один и так далее. С QDialog все просто
Код:

if ( dialog.exec() != QDialog::Accepted )

А как сделать тоже самое для QDockWidget???

А что просто? Ты что то не дописал...


Название: Вопрос по QDockWidget
Отправлено: crocus от Март 21, 2006, 17:38
Если экземпляр диалогового окна существует новый диалог уже не откроется:
Код:

         QSqlConnectionDialog dialog( this );
           if ( dialog.exec() != QDialog::Accepted )
         return ;


Название: Вопрос по QDockWidget
Отправлено: crocus от Март 22, 2006, 17:55
Так что никто не знает как сделать чтобы открывалось не более одного экземпляра docka??


Название: Вопрос по QDockWidget
Отправлено: Hordi от Март 22, 2006, 18:06
Ну так проверяй - если док есть, то не создавай... ПРоверять можно как по имени, так и другими способами.


Название: Вопрос по QDockWidget
Отправлено: Steven_Orko от Март 22, 2006, 23:35
Цитата: "crocus"
Так что никто не знает как сделать чтобы открывалось не более одного экземпляра docka??


Код:

//Возвращает TRUE в случае наличия a dock. Если a dock нету,
//то создает его. False - если a dock по каким-либо
//причинам отсутствует
static bool CreateOrCheckDock(QWidget * parent = 0, Qt::WFlags flags = 0)
{
    static QDockWidget* myDock = NULL;
    if (NULL == myDock)
    {
         myDock = new QDockWidget(parent, flags);
         if (NULL != myDock) return true;
         else return false;
    } else return true;
}