crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
yuramuv
  опции профиля:
сообщение 12.9.2011, 4:33
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 12.9.2011
Пользователь №: 2864

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




Репутация:   0  


Создал форму, на ней verticalLayout. Создал новый виджет по этой статьи Link
Несколько вопросов.
1. Как узнать координаты мыши на виджете??
2. Что делает этот кусок кода? (из ссылки сверху)
QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }

3. При изменении размера формы, виджет сохраняет свой начальный размер.
Создал некую функцию
void MainWindow::change_size()
{   int _w=width();
    int _h=height();
    ui->verticalLayoutWidget->setGeometry(0,0,_w-160,_h);
}

которая вызывается когда меняются даные в doubleSpinBox. Как сделать чтоб она вызывалась при изменении размера формы?

зы.Просьба не критикировать за, возможно, ламерские вопросы, просто я не нашел ответа на них.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 12.9.2011, 11:24
Сообщение #2


Участник
**

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

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




Репутация:   11  


Цитата(yuramuv @ 12.9.2011, 5:33) Link
Создал форму, на ней verticalLayout. Создал новый виджет по этой статьи Link
Несколько вопросов.
1. Как узнать координаты мыши на виджете??
Если по событию мыши, то смотри Link и события мыши Link, Link, Link, Link.

Если в произвольном месте программы, то смотри Link, Link

Цитата(yuramuv @ 12.9.2011, 5:33) Link
2. Что делает этот кусок кода? (из ссылки сверху)
QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }

По событию QEvent::LanguageChange переводит интерфейс. Link

Цитата(yuramuv @ 12.9.2011, 5:33) Link
3. При изменении размера формы, виджет сохраняет свой начальный размер.
Создал некую функцию
void MainWindow::change_size()
{   int _w=width();
    int _h=height();
    ui->verticalLayoutWidget->setGeometry(0,0,_w-160,_h);
}

которая вызывается когда меняются даные в doubleSpinBox. Как сделать чтоб она вызывалась при изменении размера формы?
Переопределить Link и дергать ее в этом методе.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
yuramuv
  опции профиля:
сообщение 13.9.2011, 1:43
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 12.9.2011
Пользователь №: 2864

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




Репутация:   0  


Спасибо. Не смог разобратся с мышкой.
Кратко говоря:
//qpaintwidget.h
private:
        QMouseEvent *_mouse;
public:
        int get_x();

//qpaintwidget.cpp
int QPaintWidget::get_x()
    {
        return _mouse->x(); 
    }

QPaintWidget::QPaintWidget(QWidget *parent) :
    QWidget(parent)
{
    _mouse=new QMouseEvent(); //не пойму что передавать в качесте аргументов
}


void MainWindow::mousePressEvent(QMouseEvent *)
    {
        int xx,yy;
        xx=wgt->get_x();//вызываем когда по форме нажали на мишь.
        //....


Не разобрался, какие параметры нужно передавать в конструктор.
Может есть другие способы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 13.9.2011, 9:46
Сообщение #4


Участник
**

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

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




Репутация:   11  


Цитата(yuramuv @ 13.9.2011, 2:43) Link
Спасибо. Не смог разобратся с мышкой.
...
Не разобрался, какие параметры нужно передавать в конструктор.
Может есть другие способы
Что-то ты накрутил сложного, все гораздо проще. Есть 2 варианта:

1. Если надо получать координаты курсора в обработчиках событий мыши. Классический пример, это показ выпадающего меню по клику. Тут все просто, методы mouseXXXEvent принимают параметр типа QMouseEvent. У него есть 2 метода pos и globalPos - локальные и глобальные координаты соответственно. Пример:
void MainWindow::mousePressEvent(QMouseEvent * event)
{
    qDebug() << "Global:" << event->globalPos();
    qDebug() << "Local:" << event->pos();
}


2. Необходимо получить координаты мыши в произвольном месте программы. Здесь нет QMouseEvent, но всегда можно воспользоваться QCursor. Пример:
void MainWindow::foo()
{
    QPoint p = QCursor::pos();

    qDebug() << "Global:" << p;
    qDebug() << "Local: " << this->mapFromGlobal(p);
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 2.8.2025, 3:20