我的笔记本电脑是64位,所以当我开始使用Qt时,我选择了64位QtCreator.现在我遇到了一个问题,我希望我生成的可执行文件可以在32位linux系统上运行.
我可以设置QtCreator来生成32位可执行文件吗?这样我就可以决定生成32位或64位的.
我不想安装另一个32位QtCreator> <.
我正在使用Qt,我使用包含多个页面的QWizard对象.当涉及到特定页面时,我想首先隐藏"下一步"按钮,并在用户执行某些操作后显示它(例如单击一个单选按钮...)
我希望在显示此特定页面时对向导进行一些自定义控制.问题是,我知道如何隐藏按钮,但我不知道应该使用哪个功能.我尝试了QWizardPage构造函数,initializePage函数,"show"函数,但所有这些函数都不起作用.
如果我将按钮控件放在向导页面构造函数中,程序将崩溃,因为向导对象尚未存在.
如果我把它放在initializePage函数中,一些QWizard函数将在initializePage函数之后重置按钮,并且所有自定义设置都将消失.
并且show函数似乎无法被覆盖.
我真的无法弄清楚哪个功能可用.是否在MFC中使用OnSetActive或在JAVA中加载?当页面显示出来时会调用哪个?
我现在正在使用QTableView和QStandardItemModel.
在QTableView中,如果双击一个单元格,此单元格将进入编辑模式,您可以编辑其内容.
现在我遇到了问题,我想通过代码(按命令)触发项目的编辑模式,我该怎么办?我在QTableView或QStandardItemModel中找不到合适的功能或插槽.我是否需要发出任何信号才能进入编辑模式?
如果我想知道编辑何时完成,我应该抓住哪个信号(用户按"Enter"或点击其他项目离开编辑模式)?
谢谢你的帮助
我正在使用Ubuntu 10.04和Qt4.6,并且我已经通过QtCreator在我自己的计算机上创建了一个可执行的二进制文件.
现在我想将我的可执行文件放在CentOS 5上,但似乎这个可执行文件无法在CentOS上运行.
错误消息是
bash: ./[filename]: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
现在我知道这来自32位和64位问题,并成功创建了32位可执行文件.
但是,由于动态链接问题,这个可执行文件仍然无法在CentOS上运行,它总是显示:
Error while loading shared libraries: libQtGUI.so.4: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我试图在.pro文件中添加"-static"标志
QMAKE_CFLAGS_RELEASE += -Os -static
QMAKE_CPPFLAGS_RELEASE += -Os -static
QMAKE_CXXFLAGS_RELEASE += -Os -static
QMAKE_CCFLAGS_RELEASE += -Os -static
Run Code Online (Sandbox Code Playgroud)
然而,看起来它只生成"静态二进制"而不是"静态链接",依赖性仍然存在.
我还尝试在.pro文件中添加以下行:
QMAKE_LFLAGS += static
Run Code Online (Sandbox Code Playgroud)
但是这个项目在执行此操作后无法编译.我没有权限在Cent OS上安装Qt,如何用静态链接编译这个项目,以便可执行文件可以独立运行?
谢谢你的帮助!
我用QTableView+ QStandardItemModel来显示一些数据(存储在其他一些数据结构中的数据),这个表视图是可排序的.
由于它是可排序的,因此在对此模型进行排序时,我还需要对存储数据的顺序进行排序.我尝试为排序信号实现一个插槽,但是我不知道在单击标头开始排序操作时发出了什么信号.
我尝试了点击的信号,但它仅针对数据行发出,而不是针对headerData.如果我想在排序QtableView+时做些什么我该怎么办QStandardItemModel?
我正在使用QWizard类,其中包含几个QWizardPage.对于某些页面,我需要在单击"下一步"按钮时执行某些操作.
我试图覆盖nextQWizard类中的插槽; 然而,似乎这不起作用.程序仍然进入next父QWizard类的原始插槽,而不是我实现的那个.
这是因为这个next插槽是虚拟保护的吗?单击下一个按钮后如何做一些事情?
我的QWizard类的头文件如下.顺便说一句,accept信号正如我预期的那样正常.
#ifndef PRIMERWIZARD_H
#define PRIMERWIZARD_H
#include <QWizard>
namespace Ui {
class PrimerWizard;
}
class PrimerWizard : public QWizard {
Q_OBJECT
public:
PrimerWizard(QWidget *parent = 0);
~PrimerWizard();
protected slots:
void next();
void accept();
protected:
void changeEvent(QEvent *e);
private:
Ui::PrimerWizard *ui;
};
#endif // PRIMERWIZARD_H
Run Code Online (Sandbox Code Playgroud)
我通过QtCreator的向导(Ha XD)创建了一个新的向导实例
代码如下:
PrimerWizard* pW = new PrimerWizard(this);
pW->exec();
Run Code Online (Sandbox Code Playgroud)
信号槽连接next由QtCreator创建,我无法找到它实际连接的位置.我认为连接是通过这个函数在ui_PrimerWizard.h中构建的:
QMetaObject::connectSlotsByName(PrimerWizard);
Run Code Online (Sandbox Code Playgroud) 我试图将一些代码移植到Mac OS X上.
该程序使用"ttmath"库,一个标题big-num标头库.这个库在windows和linux上运行良好,但是当我尝试在Mac上编译并运行它时,会出现以下错误消息:
"can't find a register in class 'BREG' while reloading 'asm'".
Run Code Online (Sandbox Code Playgroud)
我发现有些文件说这个问题是由旧版本的GCC编译器(build 5488)引起的,但是在我更新GCC之后这个消息仍然显示出来.
目前我的GCC版本是:
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5490)
Run Code Online (Sandbox Code Playgroud)
操作系统是:Mac OS X 10.5.8版
我找不到有关如何解决这个问题的任何有用信息,有没有人可以帮助我?非常感谢!
我尝试在 ubuntu 10.04 上安装 gcc 4.5 但失败了。这是一个我不知道如何解决的编译错误。有没有人在ubuntu上成功安装最新的gcc?以下是我的步骤和错误信息,我想知道问题出在哪里....
第一步:下载这些文件:
gcc-core-4.5.0.tar.gz
gcc-g++-4.5.0.tar.gz
gmp-4.3.2.tar.bz2
mpc-0.8.1.tar.gz
mpfr-2.4.2.tar.gz
Run Code Online (Sandbox Code Playgroud)
第二步:解压以上文件
Step3:将gmp、mpc、mpfr移动到gcc-4.5.0/目录下。
mv gmp-4.3.2 gcc-4.5.0/gmp
mv mpc-0.8.1 gcc-4.5.0/mpc
mv mpfr-2.4.2 gcc-4.5.0/mpfr
Run Code Online (Sandbox Code Playgroud)
Step4:进入gcc-4.5.0目录进行配置:
sudo ./configure
Run Code Online (Sandbox Code Playgroud)
Step5:编译安装
sudo make
sudo make install
Run Code Online (Sandbox Code Playgroud)
前4步就OK了,我就可以配置成功了。但是,当我尝试编译它时,出现以下错误消息,我无法弄清楚问题是什么。我应该将名称从“gcc 4.5”更改为“gcc”吗??需要我们自己来做这件事有点奇怪。我在安装过程中遗漏了什么吗?
xxx@xxx-laptop:/media/Data/Tool/linux/gcc 4.5/gcc-4.5.0$ sudo make
[sudo] password for xxx:
[ -f stage_final ] || echo stage3 > stage_final
/bin/bash: line 2: test: /media/Data/Tool/linux/gcc: binary operator expected
/bin/bash: /media/Data/Tool/linux/gcc: No such file or directory
make[1]: Entering directory `/media/Data/Tool/linux/gcc 4.5/gcc-4.5.0'
make[2]: Entering directory `/media/Data/Tool/linux/gcc 4.5/gcc-4.5.0'
make[3]: Entering directory …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 QTableView 编写一些继承类(我们称之为 A),并希望覆盖插槽
void 编辑(常量 QModelIndex 和索引)
来自 QAbstractItemView。我知道这个函数可以触发编辑模式,但我的问题是:我希望每当用户在 A 类中触发编辑模式时,程序都可以进入被覆盖的槽A::edit。
不过好像只有直接调用A::edit,程序才能进入。
由于 QTableView 来自 QAbstractItemView,如果通过其他方式(例如鼠标双击)触发编辑模式,程序将运行默认的QAbstractItemView::edit而不是A::edit。
我尝试连接“已激活”信号,但显然这不是触发编辑模式的正确信号。每次编辑器被触发时是否都要做一些事情?
另外,我想在编辑模式结束时通过按 Enter 或 ESC 或鼠标单击其他位置来执行一些操作。同样的情况也发生在插槽上
void editorDestroyed ( QObject * 编辑器 )
谁能帮我解决这个问题?我将非常感激,谢谢!
qt ×7
qt4 ×7
c++ ×5
qtableview ×3
gcc4 ×2
qt-creator ×2
qt4.6 ×2
g++ ×1
inheritance ×1
macos ×1
ubuntu ×1
wizard ×1