Qt无法使QEditLine显示文本
Qt can't make QEditLine to show text
我浏览了控制台应用程序,并考虑做一些不同的事情,继续前进,做一些更雄心勃勃的事情。我的朋友告诉我关于ide Qt的事。一切都很顺利,直到我碰壁,这真的阻止了我在新的IDE中开发我的第一个应用程序。以前我使用过Visual Studio,由于互联网上有大量的漫游,我经常自己找到答案,但这次我放弃了!所以这是我第一次寻求帮助。我的应用程序应该是一个简单的计算器。问题是,我无法使QEditLine对象显示由按钮表示的numebr,它从不更改并显示0。如果我使用设计模式,并且做得都一样,它就可以工作,而且dgtClickd((函数的定义在QT提供的示例中几乎相同。我非常乐意为您提供任何建议和帮助。这真的很烦人,我真的不喜欢留下这样没有答案的问题。
klk.cpp
#include "klk.h"
#include "ui_klk.h"
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)//,
// ui(new Ui::MainWindow)
{
//ui->setupUi(this);
dgtButton[0] = new QPushButton("&0");
dgtButton[1] = new QPushButton("&1");
dgtButton[2] = new QPushButton("&2");
dgtButton[3] = new QPushButton("&3");
dgtButton[4] = new QPushButton("&4");
dgtButton[5] = new QPushButton("&5");
dgtButton[6] = new QPushButton("&6");
dgtButton[7] = new QPushButton("&7");
dgtButton[8] = new QPushButton("&8");
dgtButton[9] = new QPushButton("&9");
for(int i =0;i<10;i++) {
connect(dgtButton[i], SIGNAL(clicked()),this,SLOT(dgtClicked()));
}
display = new QLineEdit("0");
display->setAlignment(Qt::AlignRight);
display->setMaxLength(15);
display->setReadOnly(true);
// centralWidget = new QWidget(this);
//this->setCentralWidget( centralWidget );
// layout = new QGridLayout( centralWidget );
layout = new QGridLayout;
layout->setSizeConstraint(QLayout::SetFixedSize);
layout->addWidget(display,0,0,1,3);
layout->addWidget(dgtButton[1],2,0);
layout->addWidget(dgtButton[2],2,1);
layout->addWidget(dgtButton[3],2,2);
layout->addWidget(dgtButton[4],3,0);
layout->addWidget(dgtButton[5],3,1);
layout->addWidget(dgtButton[6],3,2);
layout->addWidget(dgtButton[7],4,0);
layout->addWidget(dgtButton[8],4,1);
layout->addWidget(dgtButton[9],4,2);
setLayout(layout);
}
void MainWindow::dgtClicked()
{
QPushButton *clickedButton = qobject_cast<QPushButton *>(sender());
dgt = clickedButton->text().toInt();
this->display->setText(QString::number(dgt));
//display->displayText();
// display->show();
}
MainWindow::~MainWindow()
{
//delete ui;
}
klk.h
#ifndef KLK_H
#define KLK_H
#include <QMainWindow>
#include <QPushButton>
#include <QWidget>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <string>
namespace Ui {
class MainWindow;
}
class MainWindow : public QWidget
{
Q_OBJECT
QPushButton *dgtButton[10];
QPushButton *addButton,*subButton;
QGridLayout *layout;
QWidget *centralWidget;
QLineEdit *display;
int dgt;
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
// Ui::MainWindow *ui;
private slots:
void dgtClicked();
};
#endif // KLK_H
klk.pro
#-------------------------------------------------
#
# Project created by QtCreator 2014-04-30T15:37:36
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = klk
TEMPLATE = app
SOURCES += main.cpp
klk.cpp
HEADERS += klk.h
FORMS += klk.ui
去掉&在文本中,然后将其转换为整数
您至少有两个问题:
-
您正在尝试将非数字("1"、"2"等(转换为整数。这肯定会失败。
-
您没有检查
QString::toInt()
转换是否存在错误。
如果你写了这样的转换操作,你本可以更容易地抓住前者:
bool ok;
dgt = clickedButton->text().toInt(&ok);
if (!ok)
qDebug() << "Failed to convert to integer:" << clickedButton->text();
文件也很清楚:
int QString::toInt(bool*ok=0,int base=10(const
返回使用base转换为int的字符串,默认情况下base为10,并且必须介于2和36之间,或0如果转换失败,则返回0
意识到这一点后,更改以下行将修复您的代码:
for(int i =0;i<10;i++) {
dgtButton[i] = new QPushButton(QString::number(i));
connect(dgtButton[i], SIGNAL(clicked()),this,SLOT(dgtClicked()));
}
正如您所看到的,我在您的代码中修复了另外两个问题:
通过清除循环来减少手动键入。
我使用了以下函数来实际从整数中获取
QString
值,在这种特殊情况下,整数是循环计数器。
QString QString::number(long n,int base=10([static]
以防万一,为了完整起见,即使QtCreator生成错误,这一行在qmake项目文件中也是不必要的:
QT += core gui
核心模块和gui模块是默认添加的,因此您可以安全地删除它们。
- 尝试使用 WinBGI 显示文本时出现编译器错误
- 动态填充的组合框不显示文本,列表未定义
- QTreeWidgetItem 突出显示文本问题
- 如何通过单击按钮在QTextEdit中显示文本?
- 在C Windows程序中显示文本文件内容
- findChild 从不显示文本浏览器
- C 在同一行中左右显示文本
- 使用 C++ 中的向量在新行上显示文本文件中的列
- 如何使用 Opengl 库显示文本文件中的 3D 点
- Qt. 方法显示文本() 如果我在 QStyledItemDelegate 中定义了 paint() 方法不起作用
- 如何在C 中的OpenGL中通过矩形显示文本
- 如何使用键盘输入和sf ::文本在SFML中添加一种文本框以显示文本字符串
- QMessageBox:无法在框中显示文本(使用 c++)
- 延迟窗口在 MFC 上显示文本
- Visual Studio代码集成的终端未显示文本
- SFML-不显示文本
- qprogressdialog未显示文本标签
- C++程序无法正确显示文本文件中的内容
- 如何在不显示文本的情况下分配Win32编辑控件的窗口名称
- SDL2 OpenGL SDL2_TTF:显示文本