crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 5.7.2020, 13:01