2014-01-17 107 views
0

我正在構建一個記事本,並且希望計算對話框中的單詞。將字數傳遞到對話框qt

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

也許你可以添加一個方法來'Word_count'類? – helsinki

回答

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. 您可以根據需要添加儘可能多的參數,但它們應該是之前的參數parent。這是因爲parent參數具有可以隱含的默認值。因爲您必須按順序指定參數,所以如果後面有必需的參數,則不能暗示它。
  5. 這隻適用於創建對話框。如果您希望對話框動態更新,則需要使用其他人建議的插槽或方法。或者,如果您不想動態更新對話框,請考慮使用exec而不是show,以便用戶在繼續工作之前必須關閉您的字數統計對話框。
+0

很好的回答,去睡覺,醒來,並在一兩分鐘內得到它的工作!謝謝 :) – sark9012

0

添加插槽void setText(const QString& text)到您的Word_count類。

然後,您可以從MainWindow類發出信號,如void textChanged(const QString& text) const

不要忘了同時連接。

相關問題