Tout d'abord, merci de m'avoir donné le temps de lire ma question.Le contenu du widget QScrollArea a été promu à QWidget
J'ai créé mon propre Qt Widget (parent de QWidget) et j'ai un QImage "inside" pour manipuler les images. Le problème que j'ai est le suivant: quand je favorise le contenu d'un QScrollArea (QDesigner) à mon widget, les caractéristiques de défilement ne fonctionnent pas; Je n'ai pas de barre de défilement ou je ne vois aucun résultat lorsque j'utilise la méthode 'ensureVisible (..)'.
S'il vous plaît pouvez-vous me dire si je dois surcharger ou remplacer toute méthode dans mon propre widget. Cordialement et merci d'avance, Oscar.
code: L'intention est d'utiliser directement MyWidget (promotion dans QDesigner) et je ne pas utiliser directement cos » QImage Je veux sauver des données supplémentaires dans le widget.
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());
}
}
Je pense que vous avez besoin d'ajouter du code à votre question ... – mosg
@mosg le code du widget est disponible. Merci pour votre suggestion. – ocell