发布网友 发布时间:2022-05-02 12:27
共1个回答
热心网友 时间:2022-06-20 01:55
创建个QDialog对象,添加layout,layout里面添加QLabel对象,用QLabel对象显示图片,然后调用QDialog::exec()。追问你好,感谢你的回答。我做的是图像处理,我要实现的在QMainWindow中点击一个按钮,比如按钮是双边滤波,然后具体的函数是在QMainWindow实现的(就是滤波的那部分),然后想点击按钮,弹出另一个对话框并实现处理后的图像的显示。现在就是两个问题:1.实现对话框的弹出(使用哪种对话框比较好?)2.实现两个类的数据的传送,就是将第一个类中的处理函数处理后的数据,在第二个对话框显示?追答首先,不太确定你说的有哪些对话框,不过按照你的需求,窗口本身应该没有多大必要搞得很复杂, 只是用来显示图像。所以对话框都是次要的,QDialog就ok,显示图像用QLabel就行。
其次,其实按照你的实现,不需要纠结类之间的传输,都做在QMainWindow里面好了。点了按钮响应点击后的代码就是在创建一个QDialog局部对象,然后按照我之前说的加子成员,用QLabel显示。这样,你会发现其实QLabel->setPixmap(data)里的data就是QMainWindow的成员变量,说白了就是都是QMainWindow的变量,不存在很复杂的跨类访问。
再其次,从设计上来讲,QMainWindow只用于基础界面管理, 建议把滤波实现代码放在另一个专用的类里面,对话框也放一个单独的cpp\h,这样都是模块化的,耦合性更低。