Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QMdiArea. Не понятное поведение
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
MishaUA
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
MishaUA
Нужно делать так:

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

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

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

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.