我想要实现的目标:
每当我在qTableView中选择一行时,我想要显示一个" popup"办法。 我不知道怎么回事。我的意思是我可以在已经存在的qLabel中显示图像,但是如何在其自己的"窗口中显示qLabel"如果没有选择行/另一行,请立即销毁此窗口?
到目前为止我所拥有的:
QLabel *test = new QLabel(this);
test->setPixmap(QPixmap::fromImage(photo));
test->setBaseSize(photo.width(), photo.height());
test->show();
但这只会在窗口的左上角创建一个非常小的标签。如何将此值设置为给定大小和当前窗口偏移量的位置?
答案 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);