• 5556阅读
  • 3回复

[讨论]关于QWizard函数中regidterField()函数的应用 [复制链接]

上一主题 下一主题
离线xiumingjun
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-28
小弟现在有个问题像请教一下。在类QWizard和QWizardPage中,为了在不同Page中传递数据,通常使用函数registerField函数,然后再使用field函数接收数据。但是为什么QLineEdit可以,而QLable却不行?部分代码如下:
第一页:  绑定。其中QLineEdit是手动输入的。而QLabel则是通过setText输入的。
  1. registerField("userName", userNameLineEdit);
  2.     registerField("proFilePath", proFilePathInfo);   //proFilePathInfo 是个QLabel
下面函数用来设置QLabel的数据:
  1. void pcmInfoPage::setProDirectory()
  2. {
  3.     QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly;
  4.     
  5.     QString directory = QFileDialog::getExistingDirectory(this,
  6.                                 tr("请选择创建路径"),
  7.                                 proFilePathInfo->text(),
  8.                                 options);
  9.     if (!directory.isEmpty())
  10.         proFilePathInfo->setText(directory);
  11. }
第二页:但是接受数据时,只有proName可以,profilepath却没有数据。
  1. QString proname = field("proName").toString();
  2.     proName->setText(proname + ".pro");
  3.     QString filepath = field("proFilePath").toString();
  4.     proFilePath->setText(filepath);

能不能告诉我为什么,怎么样解决?






离线gerryleeke

只看该作者 1楼 发表于: 2012-04-27
查了一下API,发现registerField 默认可以支持QAbstractButton,QAbstractSlider,QComboBox,QDateTimeEdit,QLineEdit,QListWidget,QSpinBox这几个类。
其他类的话需要用setDefaultProperty来设置。


我的问题是:我想注册QTextEdit里的内容,
setDefaultProperty("QTextEdit","toPlainText","textChanged");
然后
registerField("text",textEdit);
然后
QString mytext= field("text").toString();
可是为什么取出来的字符串为空??
离线gerryleeke

只看该作者 2楼 发表于: 2012-04-27
顶一下,有人回答吗?
离线gerryleeke

只看该作者 3楼 发表于: 2012-04-27
好吧,找到原因了!
setDefaultProperty 的第二个参数为属性而不是方法(改为PlainText)
快速回复
限100 字节
 
上一个 下一个