qTableView选择行 - >显示图像

时间:2014-10-12 21:45:55

标签: c++ qt

我想要实现的目标:

每当我在qTableView中选择一行时,我想要显示一个" popup"办法。 我不知道怎么回事。我的意思是我可以在已经存在的qLabel中显示图像,但是如何在其自己的"窗口中显示qLabel"如果没有选择行/另一行,请立即销毁此窗口?

到目前为止我所拥有的:

QLabel *test = new QLabel(this);
test->setPixmap(QPixmap::fromImage(photo));
test->setBaseSize(photo.width(), photo.height());
test->show();

但这只会在窗口的左上角创建一个非常小的标签。如何将此值设置为给定大小和当前窗口偏移量的位置?

2 个答案:

答案 0 :(得分:2)

您将父级设置为标签,因此标签显示在父级上。删除父级和标签将显示为单独的窗口。

QLabel *test = new QLabel;

但当然在这种情况下存在内存泄漏风险。所以将属性设置为标签。

test->setAttribute(Qt::WA_DeleteOnClose);

使用此行,当您关闭标签时,它会立即被销毁。但我认为你不应该重新创建标签来显示图像。您可以显示或隐藏新像素图并将其设置为一个标签。如果标签可见(isVisible()方法)设置新图像,如果它不可见,也设置新图像并显示它。使用QTableView的clicked()信号来捕获行/列的选择。

使用move(),resize()或setGeometry设置标签的不同参数。

答案 1 :(得分:0)

你应该实现如下:

在标题:QPixmap *pixH and QLabel * header;

中声明
header = new QLabel(this);
pixH = QPixmap(":/images/header.png");
header->setPixmap(pixH);
header->setGeometry(0,0,320,30);
header->setAlignment(Qt::AlignHCenter);