2013-05-07 148 views
-2

確定,所以對詳細(含代碼)更多疑問,請訪問: http://ubuntuforums.org/showthread.php?t=2142977我的控制檯應用程序轉換爲Qt的

我不能再次輸入所有的代碼。

但是對於一個描述,我有一個Qt表單,它所做的是翻譯消息,所以它有兩個選擇:將消息從英語翻譯爲亂碼和從亂碼翻譯爲英語(單選按鈕選擇; engLang和fakeLang)我希望我的if語句(如鏈接網頁所示)爲if條件檢查engLang是否被選中,然後檢查是否選中了fakeLang,然後根據選中的哪一個使用適當的代碼進行翻譯。

最後我的最後一個問題是我怎麼做使它所以當我按下翻譯它運行的if語句,並在第二個框(標記secondMessage)

回答

1

我還記得我第一次我試圖顯示新信息從控制檯程序製作GUI。第一次很難。請務必閱讀Qt提供的示例。這是實現你想要做的事情的一個起點。

http://qt-project.org/doc/qt-4.8/examples-widgets.html

http://qt-project.org/doc/qt-4.8/all-examples.html

您還可以找到內置在Qt Creator的歡迎屏幕示例和教程。

祝你好運。

widget.h

#ifndef WIDGET_H 
#define WIDGET_H 

#include <QWidget> 
#include <QTextEdit> 
#include <QComboBox> 

class Widget : public QWidget 
{ 
    Q_OBJECT 

public: 
    Widget(QWidget *parent = 0); 
    ~Widget(); 
public slots: 
    void translate(); 
private: 
    QTextEdit * lhs; 
    QTextEdit * rhs; 
    QComboBox * mode_comboBox; 
}; 

#endif // WIDGET_H 

widget.cpp

#include "widget.h" 
#include <QHBoxLayout> 
#include <QVBoxLayout> 

Widget::Widget(QWidget *parent) 
    : QWidget(parent) 
{ 
    QVBoxLayout * vlayout = new QVBoxLayout; 

    QHBoxLayout * hlayout = new QHBoxLayout; 

    mode_comboBox = new QComboBox; 
    mode_comboBox->addItems(QStringList() << "Encrypt" << "Decrypt"); 
    vlayout->addWidget(mode_comboBox); 

    lhs = new QTextEdit; 
    lhs->setText("Enter Text Here."); 
    rhs = new QTextEdit; 
    rhs->setText("See the output here."); 
    rhs->setReadOnly(true); 

    QObject::connect(lhs, SIGNAL(textChanged()), this, SLOT(translate())); 
    QObject::connect(mode_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(translate())); 
    hlayout->addWidget(lhs); 
    hlayout->addWidget(rhs); 

    vlayout->addLayout(hlayout); 
    this->setLayout(vlayout); 
} 

Widget::~Widget() 
{ 

} 

void Widget::translate() 
{ 
    if(mode_comboBox->currentText() == "Encrypt") 
    { 
     QString str = lhs->toPlainText(); 
     rhs->setText(str.toUpper()); 
    } 
    else 
    { 
     QString str = lhs->toPlainText(); 
     rhs->setText(str.toLower()); 
    } 
} 

的main.cpp

#include "widget.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    Widget w; 
    w.show(); 

    return a.exec(); 
} 
+0

在你的代碼裏,它說Widget我用我的類名替換它的權利?即使它說QWidget? – Bresser 2013-05-08 00:29:14

+0

QWidget是不同的。它是基類,或者你的類從中派生出來的。 – phyatt 2013-05-08 00:32:55

+0

下面是一些關於什麼類的介紹的鏈接。它們對GUI和複雜程序非常有用。 http://www.cplusplus.com/doc/tutorial/ http://www.cplusplus.com/doc/tutorial/classes/ http://www.cplusplus.com/doc/tutorial/classes2/ – phyatt 2013-05-08 00:33:19

0

這是不是真的清楚你問什麼;我承認你試圖將其分解爲上下文和問題,但文本可以使用一些校對。此外,代碼可以並且應該在這裏複製(您不必再次鍵入它,這就是Ctrl + C的用途),因爲如果沒有縮進和顏色,即使是簡單的代碼也很難實現。

至於我對你的問題的理解,因爲這是關於Qt而不是關於處理,你應該發佈你的Qt代碼。同時,我建議您查看QRadioButton類的文檔和examples,尤其是isChecked()。如果你想在按下一個按鈕後運行處理,你只需要將事件按()連接()到一個自定義類的一個插槽中,該插槽將執行處理。

+0

,你能給我一些關於如何做連接的文檔嗎? – Bresser 2013-05-08 00:25:33

+0

connect()是Qt的脊柱,你可以在任何教程中找到它。但是我會在他們的網站上推薦官方的Qt [開發者指南](http://doc.qt.digia.com/4.7/gettingstartedqt.html)。有一個信號和插槽的鏈接。上面我已經看到,你不完全確定指針是什麼,所以我應該提醒你,Qt使用了很多微妙的C++特性。你應該通過先學習C++來逐步完成這些事情(指針從C實際上一路迴歸),以便爲即將發生的事情做好準備。 – 2013-05-08 08:43:36

+0

另外,如果您可以講法語的[Cited, )非常有名。 最後,作爲一個快速提醒,有用的答案應該通過點擊帖子旁邊的向上箭頭來標記(特別是當作者在像phyatt這樣的評論中幫助你很多時)。滴答作出表明該主題已解決(顯然不是),這將吸引更少的助手在你的話題上......但是,當它解決了這個話題時,仍然有必要勾選答案。 – 2013-05-08 08:46:53

相關問題