我想要实现的目标:
每当我在 qTableView 中选择一行时,我都想以某种“弹出”方式显示图像。 我不知道该怎么做。我的意思是我可以在已经存在的 qLabel 中显示图像,但是如果没有选择行/另一行,我如何在它自己的“窗口”中显示 qLabel 并立即销毁该窗口?
我目前拥有的:
QLabel *test = new QLabel(this);
test->setPixmap(QPixmap::fromImage(photo));
test->setBaseSize(photo.width(), photo.height());
test->show();
但这只会在窗口的左上角创建一个非常小的标签。我怎样才能使它具有给定的大小和当前窗口偏移量的位置?
最佳答案
您将父级设置为您的标签,因此标签显示在父级上。删除父级和标签将显示为单独的窗口。
QLabel *test = new QLabel;
但当然在这种情况下存在内存泄漏风险。所以将属性设置为标签。
test->setAttribute(Qt::WA_DeleteOnClose);
有了这条线,当你关闭你的标签时,它会立即被销毁。但我认为你不应该重新创建标签来显示图像。您可以显示或隐藏新的像素图并将其设置为一个标签。如果标签可见(isVisible() 方法)设置新图像,如果它不可见,也设置新图像并显示它。使用 QTableView 的 clicked() 信号来捕获行/列的选择。
使用 move()、resize() 或 setGeometry 来设置标签的不同参数。
关于c++ - qTableView选择行->显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26330334/