я подклассы QWidget следующим образом:подклассы QWidget не двигается правильно
class myClass : public QWidget
{
public:
explicit myClass(QWidget *parent);
protected:
void paintEvent(QPaintEvent *event);
}
myWidget::myWidget(QWidget* parent) : QWidget(parent)
{
setGeometry(10,10,100,100);
}
void myWidget::paintEvent(QPaintEvent *event)
{
QPainter qp(this);
QBrush bBlue(QColor::blue);
qp.fillRect(geometry(), bBlue);
}
То, что я хотел, чтобы создать синий фон QWidget помещается на родитель QWidget на 10,10 размере 100,100.
То, что я получаю, является размером по умолчанию для myWidget примерно 100,50 в 0,0 с черным фоном (или прозрачным) и синим прямоугольником, начиная с 10,10 в myWidget и обрезанным myWidget.
Это как setGeometry переместил прямоугольник внутри myWidget, а не сам myWidget.
достаточно новое для Qt и хотел бы объяснить и затруднительное положение выше ...
Спасибо заранее.
Gary.
... вот фактический код:
это MyWidget
class piTemplateWidget : public QWidget
{
public:
explicit piTemplateWidget(QWidget* parent);
static QColor* white;
static QColor* black;
static QColor* lightGrey;
static QColor* lightGreen;
piTemplate* tplt;
protected:
void paintEvent(QPaintEvent *event);
};
QColor* piTemplateWidget::white = new QColor(15,15,15);
QColor* piTemplateWidget::black = new QColor(250,250,250);
QColor* piTemplateWidget::lightGrey = new QColor(100,100,100);
QColor* piTemplateWidget::lightGreen = new QColor(250,15,250);
piTemplateWidget::piTemplateWidget(QWidget* parent) : QWidget(parent)
{
tplt = NULL;
move(100,100);
resize(300,240);
}
void piTemplateWidget::paintEvent(QPaintEvent *event)
{
QPainter qp(this);
QBrush bWhite(*white);
qp.fillRect(this->geometry(), bWhite);
// if (tplt==NULL)
// return;
// tplt->render(&qp);
}
... и это конструктор родительских виджетов, который конкретизирует мой виджет
piTemplateEdit::piTemplateEdit(QWidget *parent) :
QWidget(parent),
ui(new Ui::piTemplateEdit)
{
ui->setupUi(this);
currentTemplate = NULL;
if (piTemplate::templates->count()>0)
{
currentTemplate = (piTemplate*)piTemplate::templates->atIndex(0);
}
templateWidget = new piTemplateWidget(this);
templateWidget->tplt = currentTemplate;
}
... Я надеюсь, что это поможет.
спасибо.
только что добавил актуальный код ... –
Спасибо за вашу помощь, надеюсь, вы можете увидеть комментарии ниже и где я ошибся ... –