crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как поставить QFrame?, Не ставится
QMainWindow
  опции профиля:
сообщение 25.1.2013, 15:29
Сообщение #1


Участник
**

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

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




Репутация:   0  


Добрый день.
Не ставится QFrame под размер виджета. Почему-то самочинно все время ставит размер 100х30. Вот код:
MyWidget::MyWidget(int x, int y, int width, int height, QWidget *parent) : QWidget(parent)
{
    p_palette.setColor(QPalette::Window, Qt::white);
    this->setPalette(p_palette);
    this->setAutoFillBackground(true);

    this->setGeometry(x, y, width, height);
    this->show();

    p_frame = new QFrame(this);
    p_frame->setFrameShape(QFrame::Box);
    p_frame->setLineWidth(2);
    p_frame->setFrameRect(this->rect());
   // p_frame->resize(this->size());
    qDebug()<<p_frame->size();
    //p_frame->setHidden(false);
}
Уже и размер исходного виджета поставил нужный, а он все равно свои 100х30.
Что делать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.1.2013, 21:06
Сообщение #2


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

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

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




Репутация:   94  


Цитата(QMainWindow @ 25.1.2013, 17:29) *
this->show();
переместить в конец функции, не задавать руками размер дочернего виджета - QFrame (это бесполезно)

Желательно первичное задание геометрии родителя делать после создания дочерних виджетов

Цитата(QMainWindow @ 25.1.2013, 17:29) *
 this->setGeometry(x, y, width, height);
    this->show();
кстати, это бесмысленно делать в конструкторе (особенно show() ) ведь объект (виджет) ещё не сконструирован. Это нужно делать после создания виджета.


П.С.

QMainWindow, ты уже 2 года с Qt а элементарных вещей в твоей голове - почти круглый нуль
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 25.1.2013, 22:01
Сообщение #3


Участник
**

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

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




Репутация:   0  


this->setGeometry(x, y, width, height);
this->show();
У меня все работает.
Так что сделать, что рамка сработала, эксперт?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.1.2013, 3:44
Сообщение #4


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

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

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




Репутация:   94  


Цитата(QMainWindow @ 26.1.2013, 0:01) *
У меня все работает.
если б работало то и темы бы этой не было.
вынеси из конструктора эти методы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 26.1.2013, 9:57
Сообщение #5


Участник
**

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

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




Репутация:   0  


Все равно не работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 28.1.2013, 13:21
Сообщение #6


Старейший участник
****

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

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




Репутация:   8  


QVBoxLayout *layout = new QVBoxLayout (this);

p_frame = new QFrame(this);
p_frame->setFrameShape(QFrame::Box);
p_frame->setLineWidth(2);
        
layout->addWidget (p_frame);

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

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


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




RSS Текстовая версия Сейчас: 25.4.2024, 17:43