• 9548阅读
  • 9回复

qt显示图片怎么才能使其在中间显示? [复制链接]

上一主题 下一主题
离线pstary
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-21
pix = new QPixmap("images/1.jpg");
label = new QLabel;
label->setPixmap(*pix);
setCentralWidget(label);//test类作为mywindow中央窗口显示
    我这样做,是用一个QLabel控件显示图片,并将QLabel空间在MainWindow窗口中央显示,但是这样的效果是当我拉伸MainWindow时,图片显示的位置始终不动,不随MainWindow窗口的变大而变化
  请问,我怎么才能使图片始终在中间显示
离线alexltr

只看该作者 1楼 发表于: 2011-05-21
scaledContents : bool

This property holds whether the label will scale its contents to fill all available space.
When enabled and the label shows a pixmap, it will scale the pixmap to fill the available space.
This property's default is false.

Access functions:
bool    hasScaledContents () const
void    setScaledContents ( bool )

[ 此帖被alexltr在2011-05-21 23:00重新编辑 ]
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线diyuanbo

只看该作者 2楼 发表于: 2011-05-22
将label加入一个布局(如QVBoxLayout),再将该布局设置给MainWindow的centerWidget()
离线pstary
只看该作者 3楼 发表于: 2011-05-22
回 1楼(alexltr) 的帖子
这个好像是充满整个屏幕的显示方法吧,我使用setScaledContents ( ture),图片随窗体的增大而增大。我想的效果是,图片的大小不变,只是位置岁窗体的改变而变,始终 处在中间。
离线pstary
只看该作者 4楼 发表于: 2011-05-22
回 2楼(diyuanbo) 的帖子
我使用setcenterWidget(mainlayout)(mainlayout是我增加的一个布局,包含了label),提示这种用法不匹配呀
离线alexltr

只看该作者 5楼 发表于: 2011-05-22
那就用就用setAlignment()试试看。

bool QLayout::setAlignment ( QWidget * w, Qt::Alignment alignment )
Sets the alignment for widget w to alignment and returns true if w is found in this layout (not including child layouts); otherwise returns false.
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线alexltr

只看该作者 6楼 发表于: 2011-05-22
回 4楼(pstary) 的帖子
void QMainWindow::setCentralWidget ( QWidget * widget )
Sets the given widget to be the main window's central widget.

在setCentralWidget里用layout肯定不匹配啦。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线alexltr

只看该作者 7楼 发表于: 2011-05-22
按2楼的方法:

  label->setFixedSize(w,h);
  mainLayout->addWidget(label);
  centralWidget()->setLayout(mainLayout);
[ 此帖被alexltr在2011-05-22 14:10重新编辑 ]
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线pstary
只看该作者 8楼 发表于: 2011-05-24
解决了,这样即可
pix = new QPixmap("images/1.jpg");
label = new QLabel;
label->setPixmap(*pix);
label->setAlignment(Qt::Alignment);
setCentralWidget(label);
离线diyuanbo

只看该作者 9楼 发表于: 2011-05-25
恭喜你答对了
快速回复
限100 字节
 
上一个 下一个