小编Cla*_*ang的帖子

Linux上的QtCreator:32位与64位

我的笔记本电脑是64位,所以当我开始使用Qt时,我选择了64位QtCreator.现在我遇到了一个问题,我希望我生成的可执行文件可以在32位linux系统上运行.

我可以设置QtCreator来生成32位可执行文件吗?这样我就可以决定生成32位或64位的.

我不想安装另一个32位QtCreator> <.

qt qt4 qt-creator

9
推荐指数
1
解决办法
7613
查看次数

在哪里控制QWizard按钮?

我正在使用Qt,我使用包含多个页面的QWizard对象.当涉及到特定页面时,我想首先隐藏"下一步"按钮,并在用户执行某些操作后显示它(例如单击一个单选按钮...)

我希望在显示此特定页面时对向导进行一些自定义控制.问题是,我知道如何隐藏按钮,但我不知道应该使用哪个功能.我尝试了QWizardPage构造函数,initializePage函数,"show"函数,但所有这些函数都不起作用.

如果我将按钮控件放在向导页面构造函数中,程序将崩溃,因为向导对象尚未存在.

如果我把它放在initializePage函数中,一些QWizard函数将在initializePage函数之后重置按钮,并且所有自定义设置都将消失.

并且show函数似乎无法被覆盖.

我真的无法弄清楚哪个功能可用.是否在MFC中使用OnSetActive或在JAVA中加载?当页面显示出来时会调用哪个?

qt qt4 wizard qt4.6

9
推荐指数
2
解决办法
7109
查看次数

如何触发QTableView中项目的编辑模式?

我现在正在使用QTableView和QStandardItemModel.

在QTableView中,如果双击一个单元格,此单元格将进入编辑模式,您可以编辑其内容.

现在我遇到了问题,我想通过代码(按命令)触发项目的编辑模式,我该怎么办?我在QTableView或QStandardItemModel中找不到合适的功能或插槽.我是否需要发出任何信号才能进入编辑模式?

如果我想知道编辑何时完成,我应该抓住哪个信号(用户按"Enter"或点击其他项目离开编辑模式)?

谢谢你的帮助

user-interface qt qt4 qtableview qt4.6

8
推荐指数
2
解决办法
8348
查看次数

无法在另一个Linux系统上运行可执行二进制文件?

我正在使用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,如何用静态链接编译这个项目,以便可执行文件可以独立运行?

谢谢你的帮助!

c++ qt cross-platform qt4 qt-creator

6
推荐指数
1
解决办法
4690
查看次数

QTableView排序信号?

我用QTableView+ QStandardItemModel来显示一些数据(存储在其他一些数据结构中的数据),这个表视图是可排序的.

由于它是可排序的,因此在对此模型进行排序时,我还需要对存储数据的顺序进行排序.我尝试为排序信号实现一个​​插槽,但是我不知道在单击标头开始排序操作时发出了什么信号.

我尝试了点击的信号,但它仅针对数据行发出,而不是针对headerData.如果我想在排序QtableView+时做些什么我该怎么办QStandardItemModel

c++ qt qt4 qtableview qabstractitemmodel

6
推荐指数
2
解决办法
5436
查看次数

如何覆盖QWizard中的"下一个"插槽?

我正在使用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)

c++ qt qt4

5
推荐指数
1
解决办法
2197
查看次数

Mac上的问题:"在重新加载asm时无法在类BREG中找到寄存器"

我试图将一些代码移植到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版

我找不到有关如何解决这个问题的任何有用信息,有没有人可以帮助我?非常感谢!

c++ macos shared-libraries gcc4

5
推荐指数
1
解决办法
2016
查看次数

ubuntu下gcc 4.5安装问题

我尝试在 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)

c++ compiler-construction ubuntu g++ gcc4

4
推荐指数
1
解决办法
3908
查看次数

QTableView中,什么“信号”触发编辑模式

我正在尝试从 QTableView 编写一些继承类(我们称之为 A),并希望覆盖插槽

void 编辑(常量 QModelIndex 和索引)

来自 QAbstractItemView。我知道这个函数可以触发编辑模式,但我的问题是:我希望每当用户在 A 类中触发编辑模式时,程序都可以进入被覆盖的槽A::edit

不过好像只有直接调用A::edit,程序才能进入。

由于 QTableView 来自 QAbstractItemView,如果通过其他方式(例如鼠标双击)触发编辑模式,程序将运行默认的QAbstractItemView::edit而不是A::edit

我尝试连接“已激活”信号,但显然这不是触发编辑模式的正确信号。每次编辑器被触发时是否都要做一些事情?

另外,我想在编辑模式结束时通过按 Enter 或 ESC 或鼠标单击其他位置来执行一些操作。同样的情况也发生在插槽上

void editorDestroyed ( QObject * 编辑器 )

谁能帮我解决这个问题?我将非常感激,谢谢!

inheritance qt qt4 signals-slots qtableview

2
推荐指数
1
解决办法
3548
查看次数