Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: stlex от Июнь 16, 2009, 17:23



Название: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: stlex от Июнь 16, 2009, 17:23
Доброго времени суток! Я в Qt полный чайник. пытаюсь нарисовать форму - справа фрейм с видгетами, слева место для рисования в канве. 

Код
C++ (Qt)
class MyWidget : public QMainWindow
........
MyWidget::MyWidget ()
{    
   layout10 = new QHBoxLayout( this, 0, 6, "layout10");
   spacer12 = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding );
   layout10->addItem( spacer12 );
   frame12 = new QFrame( this, "frame12" );
   frame12->setMaximumSize( QSize( 150, 32767 ) );
   frame12->setFrameShape( QFrame::StyledPanel );
   frame12->setFrameShadow( QFrame::Raised );
   layout10->addWidget( frame12 );
   resize( QSize(649, 648).expandedTo(minimumSizeHint()) );
}
 

в левом верхнем углу формы появляется прямоугольник, на котором не появляется нарисованное в канве окна   (смотрите  http://www.salekhard.org/temp/example.jpg (http://www.salekhard.org/temp/example.jpg) )
Код
C++ (Qt)
 
void MyWidget::paintEvent (QPaintEvent* paintEvent)
{
   QPainter p;                
   p.begin(this);              
.......

Помогите пожалуйста, я по разному пытался, не выходит ничего


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: spectre71 от Июнь 16, 2009, 17:35
1) А не проще вместо QSpacerItem положиьт QWidget на котором потом и рисовать.
2) Убери приведенный тобой код из MyWidget::MyWidget () и посмотри что получится.


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: spectre71 от Июнь 16, 2009, 17:44
Может надо сделать

layout10 = new QHBoxLayout( centralWidget (), 0, 6, "layout10");


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: stlex от Июнь 16, 2009, 17:44
Цитировать
1) А не проще вместо QSpacerItem положиьт QWidget на котором потом и рисовать.
2) Убери приведенный тобой код из MyWidget::MyWidget () и посмотри что получится.

1) Хорошая идея, попробую
2) Если убираю  layout10 = new QHBoxLayout( this, 0, 6, "layout10") , фигня исчезает


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: stlex от Июнь 16, 2009, 17:52
Цитировать
Может надо сделать

layout10 = new QHBoxLayout( centralWidget (), 0, 6, "layout10");

В этом случае фрейм с рамкой появляется как раз там, где был артефакт :-))


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: stlex от Июнь 16, 2009, 18:05
Спасибо, проблема решена, создал слева новый фрейм, на нем и рисую. Но глюк интересный.


Название: Re: При создании QHBoxLayout появляется непонятный артефакт
Отправлено: spectre71 от Июнь 16, 2009, 18:09
Ты посмотри в доке что такое QMainWindow - его структуру.
На нем уже есть другие специальные виджеты, а ты пытаешься на нем рисовать.
Вот они и прекрывают твой рисунок.
Либо используй QWidget вместо QMainWindow, либо сделай правильную компоновку и рисуй на виджите на котором больше ничего не лежит.