C++ QT创建者QlineEdit

C++ QT创建者QlineEdit,c++,qt,qlineedit,C++,Qt,Qlineedit,我对Qt非常陌生,我对QlineEdit有一个问题。当我运行程序时,它会显示QSpinEdit而不是QLineEdit框。我需要在QlineEdit中输入3个值,并计算一个标记,该标记将显示在QMessageBox #include <QtGui> int main (int argc, char* argv[]) { QApplication app(argc, argv); bool ok; double answer, mark; do

我对Qt非常陌生,我对
QlineEdit
有一个问题。当我运行程序时,它会显示
QSpinEdit
而不是
QLineEdit
框。我需要在
QlineEdit
中输入3个值,并计算一个标记,该标记将显示在
QMessageBox

#include <QtGui>


int main (int argc, char* argv[]) {
    QApplication app(argc, argv);

    bool ok;
    double answer, mark;


    do {

        mark = QInputDialog::getDouble(0, "MarkCalc", "Enter the assignment marks:", QLineEdit::Normal, ok);

        double a1 = mark/100 * 20/100;
        double a2 = mark/100 * 50/100;
        double a3 = mark/100 * 30/100;
        double ym = (a1 +a2 +a3) *20;
        double em = 80 * ym;
        QString rep = QString("Final Mark: %1").arg(em);
        answer = QMessageBox::question(0, "Final Marks", rep,QMessageBox::Yes | QMessageBox::No);
       } while (answer == QMessageBox::Yes);
    return 0;
}
#包括
int main(int argc,char*argv[]){
QApplication应用程序(argc、argv);
布尔ok;
双重回答,马克;
做{
mark=QInputDialog::getDouble(0,“MarkCalc”,“输入赋值标记:”,QLineEdit::Normal,ok);
双a1=标记/100*20/100;
双a2=标记/100*50/100;
双a3=标记/100*30/100;
双ym=(a1+a2+a3)*20;
双em=80*ym;
QString rep=QString(“最终标记:%1”).arg(em);
答案=QMessageBox::问题(0,“最终分数”,代表,QMessageBox::是| QMessageBox::否);
}while(答案==QMessageBox::Yes);
返回0;
}

这是因为您看到的对话框的实现是:

class QInputDialogSpinBox : public QSpinBox {
Q_OBJECT
public:
  QInputDialogSpinBox(QWidget *parent) : QSpinBox(parent) {
    connect(lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(notifyTextChanged()));
    connect(this, SIGNAL(editingFinished()), this, SLOT(notifyTextChanged()));
  }
...
};

所以,如果您需要QLineEdit base dialog,您必须自己实现它。

在他的代码中您在哪里看到
QInputDialogSpinBox
?在QInputDialog::getDouble实现中。我迷路了。我在代码中没有看到对话框微调框。请你进一步解释一下好吗。谢谢。您的代码中有QInputDialog::getDouble方法。此方法创建QInputDialog对象并向其中添加QSpinBox小部件。如果需要QLineEdit,请尝试QInputDialog::getText()方法。