crossplatform.ru

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


  Ответ в QMdiArea. Не понятное поведение
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 12.3.2014, 4:37
 
Цитата(MishaUA @ 11.3.2014, 1:35) *
 child->show();
к стати говоря, чтобы не было глюков, лучше манипуляции делать через экземпляр QMdiSubwindow, т.е.:

QMdiSubWindow *sub = ar->addSubWindow(child);
sub->show(); // командуем субокну, а не виджету

MishaUA Дата 10.3.2014, 23:35
  Нужно делать так:

    QWidget *child = new QWidget();
    ar->addSubWindow(child);

    child->show();
MishaUA Дата 10.3.2014, 12:23
  h:
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QMdiArea    *ar;
    void contextMenuEvent(QContextMenuEvent* pe) {add();}

public slots:
    void add();
private:
    Ui::MainWindow *ui;
};

cpp:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ar = new QMdiArea(this);
    setCentralWidget(ar);

    add();

    QTimer    *t    = new QTimer(this);
    connect(t, SIGNAL(timeout()), this, SLOT(add()));
    t->start(100);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::add()
{
    qDebug("add");
    ar->addSubWindow(new QWidget());
}

Алгоритм должен быть такой: При запуске создается Mdi, после чего на него добавляется окно, так же, окно должно создаваться по таймеру и при левом клике, но реально создается только при запуске.
Где мой косяк?
PS: Qt 5.2.1
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.7.2025, 20:12