Qt没有从lineedit获取文本

时间:2015-08-30 16:52:28

标签: c++ qt

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners(
  listeners = CassandraUnitTestExecutionListener.class,
  mergeMode = MERGE_WITH_DEFAULTS
)
@CassandraUnit
public class MyCassandraUnitTest {

  @Test
  public void xxx_xxx() {
  }
}

使用qt。 对不起,如果在我很新之前就已经问到这个问题并且找不到答案。 我不明白我做错了什么。我将用户名和密码设置为ui行编辑内的文本。但每次单击此按钮功能时,对话框文本的输出始终为空白。我怎样才能得到它以便阅读文本?

1 个答案:

答案 0 :(得分:0)

好吧,我跑了一些测试,这就是我发现的:

如果您设置了某种信号槽连接,该连接调用的函数包含if / else statment,程序将起作用。这是我做的以下程序:

dialog.h:

    #ifndef DIALOG_H
    #define DIALOG_H

    #include "ui_dialog.h"
    #include <QDialog>

    class DialogClass :  public QDialog, public Ui::Dialog
    {
        Q_OBJECT

    public:
        DialogClass(QWidget *parent = 0);
    public slots:
        void check();
    };

    #endif // DIALOG_H

Dialog.cpp:

    #include "dialog.h"
    #include <QMessageBox>

    DialogClass::DialogClass(QWidget *parent) : QDialog(parent)
    {
        setupUi(this);
        connect(pushButton, SIGNAL(clicked()), this, SLOT(check()));
    }

    void DialogClass::check()
    {
        QString username = lineEdit->text();
        QString password = lineEdit_2->text();

        QMessageBox Failed;
        Failed.setWindowFlags(Qt::FramelessWindowHint);

        if(username == "Jon" && password == "12345")
        {
            Failed.setText("Login failed. Try again.");
            Failed.exec();
        } else {
            Failed.setText(password);
            Failed.exec();
        }
    }

和main.cpp

    #include <QApplication>
    #include <QMessageBox>
    #include "dialog.h"
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        DialogClass w;
        w.show();
        return a.exec();
    }
低音地说,我所做的就是创建一个对话类,就像你的主要功能一样,只有我的按钮对话框。我有一个按钮。之后,我使用按钮建立一个信号槽连接,确保当单击此按钮时,它将调用check()函数(这基本上是你的if / else算法制作成一个槽),它检查是否用户名为&#34; Jon&#34;,密码为&#34; 12345&#34;。

为什么您的原始实施不起作用?

对不起,但我不确定。

然而,这种方法应该有效。如果我弄清楚为什么if语句没有提升,我会补充答案。但是,这种方法应该可以使您的应用程序正常运行。

快乐的编码!