首先,感謝您閱讀我的問題。QScrollArea小部件內容提升爲QWidget
我創建了我自己的Qt Widget(QWidget的父類),並有一個QImage「內部」來操作圖像。我遇到的問題如下:當我將QScrollArea(QDesigner)的內容提升到我的小部件時,滾動功能不起作用;我沒有任何滾動條,或者當我使用方法'ensureVisible(..)'時看不到任何結果。
請你能告訴我,如果我需要重載或重寫我自己的小部件中的任何方法。
感謝致謝, 奧斯卡。
代碼:我們的目的是直接使用進myWidget(在QDesigner促進它),我不直接使用QImage的「因爲我想保存在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());
}
}
我認爲你需要給你的問題添加一些代碼... – mosg 2010-06-05 12:15:29
@mosg小部件的代碼是可用的。感謝您的建議。 – ocell 2010-06-05 16:55:27