将字数传递给对话qt

时间:2014-01-17 02:04:31

标签: qt qstring qmainwindow

我正在构建一个记事本,并希望在对话框中计算单词。

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();
}

如何将所需信息输入对话框?

感谢。

2 个答案:

答案 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();
}

重要说明:

  1. QObject *parent参数应始终存在于构造函数参数中。确保只将= 0放在头文件中,否则会出错。
  2. 您的构造函数应该标记为显式,除非您知道您不希望这样。显式阻止C ++编译器使用给定的构造函数自动转换为您的类型。
  3. 使用构造函数初始化列表语法将父参数传递给继承类,无论是QDialogQWidget还是QObject。这是使用: QDialog(parent)在源文件示例中完成的。
  4. 您可以根据需要添加任意数量的参数,但在<{em> parent参数之前它们应该是。这是因为parent参数具有可隐含的默认值。因为必须按顺序指定参数,所以如果后面有必需的参数,则不能暗示它。
  5. 这仅适用于创建对话框。如果您希望对话框动态更新,则需要使用其他人建议的插槽或方法。或者,如果您不想动态更新对话框,请考虑使用exec代替show,以便用户在继续工作之前必须关闭字数对话框。