我正在构建一个记事本,并希望在对话框中计算单词。
QString input = ui->textEdit->toPlainText();
int spaces = input.count(" ");
ui->NumWordsLabel->setNum(spaces);
这是我迄今为止的尝试。
但是,我想在对话框中执行此代码,因此我需要传递
ui->textEdit->toPlainText()
进入我的对话框。
这是我创建对话框的方式......
void MainWindow::on_actionWord_Count_triggered()
{
word_count = new Word_count();
word_count->show();
}
如何将所需信息输入对话框?
感谢。
答案 0 :(得分:0)
在您的void setText( const QString& text )
课程中添加Word_count
之类的广告。
然后,您可以从void textChanged( const QString& text ) const
课程中发出信号,例如MainWindow
。
别忘了连接两者。
答案 1 :(得分:0)
通常,您可以传递构造函数参数以将数据传递给您的类。例如:
标题文件:
class Word_count : public QDialog
{
Q_OBJECT
public:
explicit Word_count(QString text, QObject *parent = 0);
...
}
源文件:
Word_count(QString text, QObject *parent)
: QDialog(parent)
{
ui->setup(this);
... figure out word count and set labels ...
}
使用方法:
void MainWindow::on_actionWord_Count_triggered()
{
word_count = new Word_count(ui->textEdit->toPlainText());
word_count->show();
}
重要说明:
QObject *parent
参数应始终存在于构造函数参数中。确保只将= 0
放在头文件中,否则会出错。QDialog
,QWidget
还是QObject
。这是使用: QDialog(parent)
在源文件示例中完成的。parent
参数之前它们应该是。这是因为parent
参数具有可隐含的默认值。因为必须按顺序指定参数,所以如果后面有必需的参数,则不能暗示它。exec
代替show
,以便用户在继续工作之前必须关闭字数对话框。