• 10863阅读
  • 6回复

[提问]如何在ComboBox下拉框中显示图片 [复制链接]

上一主题 下一主题
离线林建斌
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-29
关键词: 求助
我是新手,想用Qt做一个界面,界面包括一个ComboBox和一个Label,在下拉框中选择要显示图片,Label中显示相应的图片,求大神指导
离线XChinux

只看该作者 1楼 发表于: 2013-03-29
楼主的帖子标题得修改一下。

安装个Qt SDK,然后在QtCreator里面做吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线林建斌
只看该作者 2楼 发表于: 2013-03-29
回 1楼(XChinux) 的帖子
我现在会单独做ComboBox,Label上显示图片,但是要在两者直接建立信号和槽就不会了,希望能给出具体的方法,谢谢
离线林建斌
只看该作者 3楼 发表于: 2013-03-29
回 1楼(XChinux) 的帖子
下面是我的代码,运行之后窗口没出来,直接让我中断程序
#include "mydialog.h"
#include <QComboBox>
#include <QMessageBox>
#include <QtGui/QIcon>
#include <QVBoxLayout>
#include <QPixmap>
#include <QImage>
MyDialog::MyDialog(QWidget *parent) :
  QDialog(parent)
{
  comboBox = new QComboBox(this);
  comboBox->resize(200, 20);
  QPixmap icon1(":/new/ico/images/图像类型选择.jpg");
  comboBox->addItem(icon1, "图像类型选择");

  QPixmap icon2(":/new/ico/images/原始图像.jpg");
  comboBox->addItem("原始图像");

  QPixmap icon3(":/new/ico/images/JPEG编码后图像.jpg");
  comboBox->addItem("JPEG编码后图像");

  QPixmap icon4(":/new/ico/images/重构信号.jpg");
  comboBox->addItem("重构信号");

  QPixmap icon5(":/new/ico/images/重构信号JPEG编码图像.jpg");
  comboBox->addItem("重构信号JPEG编码图像");



  //设置列表框中选项的图标
  comboBox->setItemIcon(1, icon2);
  comboBox->setItemIcon(2, icon3);
  comboBox->setItemIcon(3, icon4);
  comboBox->setItemIcon(4, icon5);

  //当下拉列表框中的项重新选择时 产生一个currentIndexChanged(int index)信号 弹出一个消息框提示你重新选择了哪一项
  connect(comboBox, SIGNAL(currentIndexChanged(int)), label, SLOT(onChanged(int index)));

  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(comboBox);
  layout->addWidget(label);

  setLayout(layout);


}
void MyDialog::onChanged(int index)
{
    label=new QLabel("",0);
    QImage img;
    switch(index){
    case 1:img.load("E:/image/1.jpg");break;
    case 2:img.load("E:/image/2.jpg");break;
    case 3:img.load("E:/image/3.jpg");break;
    case 4:img.load("E:/image/4.jpg");
    }

    QPixmap mp;
    mp = mp.fromImage(img);
    label->setPixmap(mp);

}
离线lcl_data
只看该作者 4楼 发表于: 2013-03-29
connect(ui.comboBoxProductType,
        SIGNAL(currentTextChanged(QString)),
        this,
        SLOT(comboBoxTextChanged(QString)));  

自己申明个slots, 绑定comboBox的currentTextChanged.在你自己的slot更新label
离线林建斌
只看该作者 5楼 发表于: 2013-04-02
回 4楼(lcl_data) 的帖子
谢谢!问题解决了,原来是我的槽的函数有问题,不要每次都申请一个新的label,主要在构造函数里申请一次就行了。
离线yfx2003

只看该作者 6楼 发表于: 2013-04-02
Re:回 4楼(lcl_data) 的帖子
引用第5楼林建斌于2013-04-02 11:27发表的 回 4楼(lcl_data) 的帖子 :
谢谢!问题解决了,原来是我的槽的函数有问题,不要每次都申请一个新的label,主要在构造函数里申请一次就行了。

修改你的帖子的标题,让人不知道你是标题党!!
www.qtcn.org/gpq4/
ajaxref.okajax.com/
快速回复
限100 字节
 
上一个 下一个