Прежде всего, спасибо, что уделили время на чтение моего вопроса.
Я создал свой собственный Qt Widget (родитель QWidget), и у меня есть QImage "inside" для манипулирования изображениями. У меня проблема в следующем: когда я продвигаю содержимое QScrollArea (QDesigner) в мой виджет, функции прокрутки не работают; У меня нет полосы прокрутки, или я не вижу результатов, когда использую метод «sureVisible (..)».
Подскажите, пожалуйста, нужно ли перегрузить или переопределить какой-либо метод в моем собственном виджете.
С уважением и заранее спасибо,
Оскар.
Код: намерение - использовать непосредственно myWidget (продвигая его в QDesigner), и я не использую напрямую QImage, потому что я хочу сохранить некоторые дополнительные данные в виджете.
struct myData
{
QImage myImage;
};
myWidget::myWidget(QWidget* parent, Qt::WFlags fl) : QWidget(parent, fl)
{
myData = new myData();
}
myWidget::~myWidget()
{
delete myData;
}
void myWidget::init(QImage image)
{
try
{
myData->myImage = image;
resize(myData->myImage->width, myData->myImage->height);
}
catch(...)
{
QString msg("myWidget::init return error\n");
qWarning(msg.toLatin1().data());
return;
}
}
QSize myWidget::minimumSize() const {
return myData->myImage.size();
}
QSize myWidget::sizeHint() const {
return myData->myImage.size();
}
void myWidget::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.drawImage(myData->myImage.rect(), myData->myImage);
}
void myWidget::mousePressEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton) {
emit mousePress(event->x(), event->y());
}
}
void myWidget::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::RightButton) {
emit mouseMove(event->x(), event->y());
}
}