• 9268阅读
  • 23回复

[讨论]QList生成的list怎么在widget显示出来? [复制链接]

上一主题 下一主题
离线tomtc123
 

只看楼主 倒序阅读 楼主  发表于: 2011-09-02




QList生成的list的怎么在widget 显示,或者在其他控件中显示出来,
怎么显示出来?请教一下,谢谢。
离线tomtc123

只看该作者 1楼 发表于: 2011-09-02
QStringList list = QFileDialog::getOpenFileNames(
                this,tr("open"),QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
    if(list.isEmpty())return;
    foreach(QString string,list)
    {
        Phonon::MediaSource source(string);
        musicSourceList.append(source);
    }
    if(!musicSourceList.isEmpty())
        musicInformationMediaObject->setCurrentSource(musicSourceList.at(int_musicsize));



QT文档说什么迭代器什么的。看不太懂,纯英文版啊。 有没有中文版的了。
离线jdwx

只看该作者 2楼 发表于: 2011-09-02
回 1楼(tomtc123) 的帖子
void QListWidget::addItems ( const QStringList & labels )
放到QListWidget里最容易,就这么一个函数就填好了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tomtc123

只看该作者 3楼 发表于: 2011-09-02
回 2楼(jdwx) 的帖子
list要先加在labels上吗?具体怎么写呢。。。。想把1楼的list加在listwidget可以怎么写?
离线tomtc123

只看该作者 4楼 发表于: 2011-09-02



QList<QString> list1;
    list1<<filename.at(0)<<filename.at(1)<<filename.at(3);
    QListWidget *listwidgt = new QListWidget();
    listwidgt->addItems(list1);
    listwidgt->show();


我这样测试了下,但我有n个filename.at(n);不可能都往后面<<filename.at(4)<<filename.at(5)<<......
离线jdwx

只看该作者 5楼 发表于: 2011-09-02
回 4楼(tomtc123) 的帖子
QStringList list = QFileDialog::getOpenFileNames(
                this,tr("open"),QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
如上面代码,已经是QStringList了,直接就可以使用void QListWidget::addItems ( const QStringList & labels )
用你的代码:
QListWidget *listwidgt = new QListWidget();  
listwidgt->addItems(list);//就是上面第一行的list    
listwidgt->show();

发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tomtc123

只看该作者 6楼 发表于: 2011-09-02
回 5楼(jdwx) 的帖子
QList<QString> list1;
    list1<<filename.at(0)<<filename.at(1)<<filename.at(3);
    QListWidget *listwidgt = new QListWidget();
    listwidgt->addItems(list1);
    listwidgt->show();


我这样测试了下,但我有n个filename.at(n);不可能都往后面<<filename.at(4)<<filename.at(5)<<......
离线tomtc123

只看该作者 7楼 发表于: 2011-09-02





QList<QString> list1;
    for(int i=0;i<int_musicsize;i++)
    {
        list1.append(filename.at(i));
    }
    //list1<<filename.at(0)<<filename.at(1)<<filename.at(3);
    listwidgt = new QListWidget();
    listwidgt->setGeometry(200,200,200,300);
    //listwidgt->setMidLineWidth(400);
    listwidgt->addItems(list1);
    connect(listwidgt,SIGNAL(itemDoubleClicked(list1)),SLOT(doubleclickedList()));
    listwidgt->show();

怎么才能实现双击选歌的功能,用itemDoubleClicked(),好像没反应呢?

离线wxj120bw

只看该作者 8楼 发表于: 2011-09-02
回 7楼(tomtc123) 的帖子
connect语句出错 抽时间看下qt信号和槽
离线tomtc123

只看该作者 9楼 发表于: 2011-09-02
connect(listwidgt,SIGNAL(itemDoubleClicked()),this,SLOT(doubleclickedList()));

嗯,原来写的是这样,后来看了下改成上面的的还是不行。

QT很多东西都不知道啊,也没学过C++,慢慢的就自己在学,遇到很多问题啊。

应该不是this接受信号吧,是上个playwidget吗?
离线wxj120bw

只看该作者 10楼 发表于: 2011-09-03
回 9楼(tomtc123) 的帖子
如果你用qt creator开发qt,运行程序的时候看“应用程序输出”输出了什么警告信息
离线tomtc123

只看该作者 11楼 发表于: 2011-09-03
回 10楼(wxj120bw) 的帖子
没警告,没错误,能够运行,没实现双击选歌的功能,我觉得用这个信号的号,应该要传个参数给槽吧,要不怎么找到你双击了那个item呢?
离线wxj120bw

只看该作者 12楼 发表于: 2011-09-03
回 11楼(tomtc123) 的帖子
你现在的理解是对的
离线tomtc123

只看该作者 13楼 发表于: 2011-09-03
connect(listwidget,SIGNAL(itemDoubleClicked(QListWidgetItem*,int sum)),
this,
SLOT(doubleclickedList(QListWidgetItem*,int sum)));

void myphonon::doubleclickedList(QListWidgetItem*,int sum)
{

    currentMusic = sum;//双击的item给当前播放
    soundplay();//音乐播放程序
}

双击item出现这个


接受信号的是上一个playwidge 但是我没定义这个playwidget只是在构造函数加了一些东西,它才显示出来的
离线tomtc123

只看该作者 14楼 发表于: 2011-09-03


构造函数:




myphonon::myphonon(QWidget *parent)
    : QMainWindow(parent)
{

   creatAction();
   creatTooBar();

   musicnameLabel = new QLabel(this);
   musicnameLabel->setGeometry(10,5,300,30);
   //resize(320,100);
   audio = new Phonon::MediaObject();
   audio->setTickInterval(1);
   audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory);
   Phonon::createPath(audio,audioOutput);

   musicInformationMediaObject = new Phonon::MediaObject(this);

   volumeSlider = new Phonon::VolumeSlider(audioOutput,this);
   volumeSlider->move(200,40);
   volumeSlider->resize(60,20);
   //volumeSlider->setStyleSheet("background-color:rgb(0,0,0,100)");
   volumeSlider->setFixedWidth(100);//固定音量条大小

   seekSlider = new Phonon::SeekSlider(audio,this); //进度滑动条
   seekSlider->move(10,40);
   seekSlider->resize(170,20);
   //seekSlider->setStyleSheet("background-color:rgb(255,255,255,100)");

   setMaximumSize(320,100);//固定播放界面大小,不可最大化
   setMinimumSize(320,100);

}
离线wxj120bw

只看该作者 15楼 发表于: 2011-09-03
回 14楼(tomtc123) 的帖子
调式下程序 看那个语句报错
离线tomtc123

只看该作者 16楼 发表于: 2011-09-04
回 15楼(wxj120bw) 的帖子
离线wxj120bw

只看该作者 17楼 发表于: 2011-09-04
回 16楼(tomtc123) 的帖子
我认为是指针问题 你还是断点调式
离线tomtc123

只看该作者 18楼 发表于: 2011-09-04
回 17楼(wxj120bw) 的帖子
l6楼就是断点调试弹出的图片,这次问题有点大看,纠结了很久了,双击功能没有,进度条不会动,不显示时间,刚接触QT,之前用了个QSound然后想写个播放器,遇到很多问题啊
离线jdwx

只看该作者 19楼 发表于: 2011-09-04
回 18楼(tomtc123) 的帖子
connect(listwidget,SIGNAL(itemDoubleClicked(QListWidgetItem*,int sum)),
this,
SLOT(doubleclickedList(QListWidgetItem*,int sum)));

void myphonon::doubleclickedList(QListWidgetItem*,int sum)
{

    currentMusic = sum;//双击的item给当前播放
    soundplay();//音乐播放程序
}
以上是你的代码;
SIGNAL(itemDoubleClicked(QListWidgetItem*,int sum))
中的:(itemDoubleClicked(QListWidgetItem*,int sum)    这个信号从哪里来的?
QListWidget信号是:itemDoubleClicked ( QListWidgetItem * item ) 没有后面的int sum
还有connect中的信号和槽参数只有类型没有参数名。


发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tomtc123

只看该作者 20楼 发表于: 2011-09-05
回 19楼(jdwx) 的帖子
connect(listwidget,SIGNAL(itemDoubleClicked(QListWidgetItem*,int )),
this,
SLOT(doubleclickedList(QListWidgetItem*,int)));
有见过这样写的,不知道这样对不对?
离线jdwx

只看该作者 21楼 发表于: 2011-09-05
itemDoubleClicked(QListWidgetItem*,int )
QListWidget没有这个信号,可以看看帮助。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tomtc123

只看该作者 22楼 发表于: 2011-09-05
回 21楼(jdwx) 的帖子
嗯,帮助有些看不太懂,英语有待提高啊,谢谢你们的帮助了,我会努力的!加油~~~~
离线tangxunmin

只看该作者 23楼 发表于: 2011-09-08
QT的帮助还是相当好懂的,比起MSDN好用多了
快速回复
限100 字节
 
上一个 下一个