crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Объект типа QFrame не хочет отображаться по клику мыши
Лёшка
  опции профиля:
сообщение 17.5.2010, 11:16
Сообщение #1


Студент
*

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

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




Репутация:   0  


есть код
Раскрывающийся текст

void MainWindow::mousePressEvent(QMouseEvent *even)
{
if(even->button() == Qt::LeftButton)
{
k++;
fig[k] = new QFrame(this);
fig[k]->setGeometry(100, 100, 20, 20);
fig[k]->setFrameStyle(6);

}
}


здесь должен создаться фрейм с заданными параметрами, но он не отображаетсь, в чем проблема???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.5.2010, 12:19
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


объект QFrame не помещается в компоновщик родительского ("этого") виджета, а родительский виджет уже создан и отображён. Чтобы в такой ситуации отобразился дочерний виджет нужно вызвать его метод show()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Лёшка
  опции профиля:
сообщение 17.5.2010, 14:08
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 17.5.2010, 13:19) *
нужно вызвать его метод show()

пробовал так делать, но тогда фрейм выскакивает отдельным окном.
вижу что с фреймом не выйдет, а есть ли в Qt что то типа БИЛДЕРОВСКОГО TShap`а или что то хотя бы немного похожее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.5.2010, 16:51
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Лёшка @ 17.5.2010, 18:08) *
огда фрейм выскакивает отдельным окном.
хотелось бы увидеть это своими глазами, т.е. пример кода который это воспроизводит.

Цитата(Лёшка @ 17.5.2010, 18:08) *
что то типа БИЛДЕРОВСКОГО TShap`а
а что это такое?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Лёшка
  опции профиля:
сообщение 18.5.2010, 10:02
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 17.5.2010, 17:51) *
Цитата(Лёшка @ 17.5.2010, 18:08) *
огда фрейм выскакивает отдельным окном.
хотелось бы увидеть это своими глазами, т.е. пример кода который это воспроизводит.

Цитата(Лёшка @ 17.5.2010, 18:08) *
что то типа БИЛДЕРОВСКОГО TShap`а
а что это такое?

TShape это объект в C++Builder который отображает геометрические фигуры(квадрат, круг, элипс и треурольник).
Раскрывающийся текст

#include "mainwindow.h"
#include "ui_mainwindow.h"


int Napr;
int k;
int i;

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

Napr = 0;
k = -1;
}

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

void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
/*Изменение направления движения в зависимости от нажатой клавиши*/
/*анализируется нажатая клавиша и задается направление движения*/

switch(event->key())
{
case Qt::Key_Left:
if (Napr!=3) Napr = 1;
break;
case Qt::Key_Right:
if (Napr!=1) Napr = 3;
break;
case Qt::Key_Down:
if (Napr!=2) Napr = 4;
break;
case Qt::Key_Up:
if (Napr!=4) Napr = 2;
break;
}
}
void MainWindow::prov()
{
/*проверка завершения движения*/
if(Napr!=0)
{
if((ui->fig->x()>ui->frame->width()||(ui->fig->x()<0)||
(ui->fig->y()<0)||(ui->fig->y()>ui->frame->height())))
{
QTimer *timer = new QTimer(this);
timer->start(1000);
Napr = 0;
}
}
}
void MainWindow::mousePressEvent(QMouseEvent *even)
{
/*вывод объектов по клику мыши*/
if(even->button() == Qt::LeftButton)
{
k++;
fig[k] = new QFrame(this);
fig[k]->setGeometry(100, 100, 20, 20);
fig[k]->setFrameStyle(6);
//fig[k]->show();
}
}

В общем здесь я пытаюсь переписать простую игру написанную мной на C++Builder на 3 курсе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.5.2010, 10:06
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Лёшка @ 18.5.2010, 14:02) *
TShape это объект в C++Builder который отображает геометрические фигуры(квадрат, круг, элипс и треурольник).
для этого, пожалуй, лучше воспользоваться графическим представлением

П.С. посмотри тему Справка по кнопкам и тэгам форума, по поводу оформления сообщений
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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