首页| 论坛| 消息

标题:【提问】comboBox和listview之间如何传递信号::我将一段源码附上,请各位帮忙指点
作者:rachel
日期:2005-10-12 15:57
内容:

想实现在comboBox中显示目录, 对应的将在listview中显示该目录下的所有文件
我的信号和槽如下:
connect(loccomboBox, SIGNAL((activated(QString))), this, SLOT(showFile()));
其中showFile()是我自己定义的槽.可是编译后 各个空间没有任何反应, 好像是没有接收到任何信号 请各位大侠指点^_^


#1 [hqxyn 10-12 20:00]
估计是这样:
你有个父窗体控件w,里面添加combobox和listview,showFile是listView中的一个slot,connect写在w中,
应把this改成listView的指针。
#2 [XChinux 10-12 23:28]
按楼主的意思看,showFile()应该是它在窗口中定义的一个slot,这个slot就直接控制listview里的显示内容了。
楼主可先在showFile()函数里面加写个简单的代码,以看是否确认showFile被调用了。确认后,再写listview相关的代码。
#3 [rachel 10-13 09:54]
我根据两位的建议 我另写了一小段代码 结果在接收信号的时候还是有问题
现在源码如下: 请各位指点
/******************mainwidget.h*******************************/
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include
#include
#include
#include
#include
#include
class MainWidget: public QDialog
{
Q_OBJECT
public:
MainWidget(QWidget *parent = 0);

QComboBox *mybox;
QListView *listall;
protected slots:
void showFile();
};
#endif //MAINWIDGET_H
/******************************mainwidget.cpp**********************************/
#include
#include "mainwidget.h"
MainWidget::MainWidget(QWidget *parent)
:QDialog(parent)
{
mybox = new QComboBox;
listall = new QListView;

QVBoxLayout *mylayout = new QVBoxLayout;
mylayout->addWidget(mybox);
mylayout->addWidget(listall);
mybox->addItem("/");
mybox->setEditable(TRUE);
setLayout(mylayout);

connect(mybox, SIGNAL(highlighted(QString)), listall, SLOT(showFile()) );

}
void MainWidget::showFile()
{
printf("print show");
}
/***********************************main.cpp***********************************/
#include
#include
#include
#include
#include "mainwidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWidget *mywidget = new MainWidget;
&nb ..
#4 Re:【提问】comboBox和listview之间如何传递信号::我将一段源码附上,请各 [XChinux 10-13 10:00]
楼主哇,showFile 是窗体的slot,所以在connect的时候,要用 this ,而不是listview的指针
#5 [rachel 10-13 12:43]
我最初是用this的 可是二楼的hqxyn建议我用listview的指针
可是我用this这个错误信息没有了 但是信号还是没有接收到这到底是怎么回事呢

<< 1 2 >> (1/2)

回复 发表
主题 版块