c++ - qTableView选择行->显示图像

标签 c++ qt

我想要实现的目标:

每当我在 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/

相关文章:

c++ - boost图遍历显示 "hidden"节点

c++ - 赋值运算符(+= 和 =)之间的区别

c++ - 有没有我可以使用 opengl 3+ 的虚拟机? virtualbox 和 vmware 没有

qt - gnuplot:为什么 gnuplot_qt 在某些 PC 上无法启动?

c++ - VLC-Qt 在 Windows 错误上从源构建

c++ - 从 QThread 中运行的 C 代码显示 QMessageBox

java - Qt 如何在 Android 上运行?

c++ - __declspec(dllexport) 嵌套类

qt - 具有作用域枚举的 QFlags 的相等运算符

c++ - 在 QT 中获取普通用户桌面路径