crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Координаты окна
demaker
  опции профиля:
сообщение 8.2.2013, 12:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как мне получить координаты окна,размещенного в главном окне?
При этом окно не явлется дочерним от главного(QWidget*parent = 0).
Оно добавляется туда через QLayout.
Пытался сделать через pos(), но не получается выдает 0;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 8.2.2013, 12:27
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(demaker @ 8.2.2013, 13:23) *
Как мне получить координаты окна,размещенного в главном окне?
При этом окно не явлется дочерним от главного(QWidget*parent = 0).
Оно добавляется туда через QLayout.
Пытался сделать через pos(), но не получается выдает 0;


ЕМНИП, то http://qt-project.org/doc/qt-4.8/qwidget.html#mapToParent должна работать и в твоем случае.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
demaker
  опции профиля:
сообщение 8.2.2013, 12:52
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Sokoloff @ 8.2.2013, 13:27) *
Цитата(demaker @ 8.2.2013, 13:23) *
Как мне получить координаты окна,размещенного в главном окне?
При этом окно не явлется дочерним от главного(QWidget*parent = 0).
Оно добавляется туда через QLayout.
Пытался сделать через pos(), но не получается выдает 0;


ЕМНИП, то http://qt-project.org/doc/qt-4.8/qwidget.html#mapToParent должна работать и в твоем случае.


Разве, у меня же QWidget*parent = 0;
Хотя тоже самое получается.

Вот так надо:
widget->mapToParent(widget->pos()).x();


Да даже если дочернее окно то - тоже самое, ничего в дебаге 0 выводит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
demaker
  опции профиля:
сообщение 8.2.2013, 14:31
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


не могу понять почему
QWidget::pos()

выводит нули
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 8.2.2013, 14:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 99
Регистрация: 26.4.2009
Пользователь №: 709

Спасибо сказали: 14 раз(а)




Репутация:   0  


Во-первых, при добавлении виджета в лайаут, парент ему задается автоматически.
Во-вторых, QWidget::pos возвращает координаты в координатной системе предка. Очевидно, что, если виджет в левом верхнем углу, то для парента это (0,0)

Сообщение отредактировал Авварон - 8.2.2013, 14:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
demaker
  опции профиля:
сообщение 11.2.2013, 10:01
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


А если не в левом верхнем углу :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
demaker
  опции профиля:
сообщение 11.2.2013, 16:01
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


Странно

делаю так

plotWidget::plotWidget(QString nameConfFile, comtrade_curve_type_t type,int number_chanel,QWidget *parent)
    :QWidget(parent)
{
    flagSelect = false;
    plot = new Plot(nameConfFile,type,number_chanel,this);

    QFileInfo fi(nameConfFile);
    QString name =  fi.fileName();

    hbLayout = new  QHBoxLayout(this);
    vbLayout = new QVBoxLayout;

    pb_clickMe = new QPushButton("ClickME",this);
    namePlot = new QLabel(name,this);
    vbLayout->addWidget(pb_clickMe);
    vbLayout->addWidget(namePlot);
    hbLayout->addLayout(vbLayout);
    hbLayout->addWidget(plot);

    qDebug()<<"Y = "<<this->pos().y();
}

void plotWidget::moveEvent(QMoveEvent *event)
{
    event->accept();

    qDebug()<<"oldPos =  "<<event->oldPos();
  
}


Почему в дебаге Y = 0 , event->oldPos() нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2024, 2:39