【发布时间】:2016-02-03 13:17:56
【问题描述】:
我在这方面花了这么多时间,我快要放弃了。我想要做的就是能够在 Qlabel 上显示存在卡的指针值。我是 C++ 和 QT 的新手。我已经阅读并观看了许多视频/教程,但仍然无法掌握这个概念。任何帮助将不胜感激。
typedef short I16;
I16 existCards;
I16 CardNo=&existCards;
I16 _8134_initial(I16* existCards)
{
return* existCards;
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString strForLabel = QString("0x") + QString::number(existCards, 16);
ui->label->setText(strForLabel);
}
【问题讨论】:
-
代码没有按照你的要求做:函数
_8134_initial返回一个I16(值不是指针地址)并且你显示CardNo这又不是地址而是而是另一个short的值 -
existCards初始化了吗? -
我已经按照 phyatt 更改了 QString 转换。但是我收到错误:C2440: 'initializing' : cannot convert from 'I16 *' to 'I16' 没有上下文可以进行这种转换。快到了。
-
任何你传递指针的地方,你都不能传递值,你需要传递一个指针,比如
return ptr;需要有一个int * func()函数的类型,否则它说你传递了错误的东西。与设置值相同。如果你制作一个指针,你必须将它存储在一个指针中。I16* CardNo = &existCards;(注意I16后面的指针)。 -
好的,我删除了 CardNo 声明。现在,当我运行程序时,标签上的输出为 0x0。如果我添加 I16* existsCards;作为变量 decleration,我得到错误:C2665:'QString::number':7 个重载中没有一个可以转换所有参数类型如果我将 *existCards 添加到 QString 参数,应用程序崩溃
标签: qt