小编Rei*_*ica的帖子

如何将文件内容读入qmake变量并将其传递给编译器?

如何在qmake项目文件中将文件内容读入变量?例如,我想KEY从文件中读取内容并将其传递给编译器:

DEFINES += KEY=**some magic and filename here**
Run Code Online (Sandbox Code Playgroud)

qt qmake

3
推荐指数
1
解决办法
1976
查看次数

如何修改QSet的元素?

我已经QSet<QuadPattern> texture;想要循环修改所有QuadPattern。

foreach 这不是一个好的解决方案,因为它会复制。

使用此代码:

QMutableSetIterator<QuadPattern>  it(texture);
while (it.hasNext())
{
    it.next();
    it.value().setCoordinate(...));
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

error: C2662: 'QuadPattern::setCoordinate' : cannot convert 'this' pointer from 'const QuadPattern' to 'QuadPattern &'
Conversion loses qualifiers
Run Code Online (Sandbox Code Playgroud)

函数setCoordinate是这样的:

内联void setCoordinate(const std :: pair&value){_coordinate = value; }

为什么会出现这个错误?

c++ qt qset

3
推荐指数
1
解决办法
539
查看次数

QOpenGLWidget类中的QPainter和OpenGL本机代码

我正在准备一个桌面应用程序来绘制一些2D图.我正在使用C++:Qt 5和visual studio 2013.我创建了一个简单的GUI并将myQOpenGLWidget放入其中.我已经使用自己的openGl着色器绘制了图形,轴和刻度.一切正常,现在我想将描述添加到我的轴和刻度线,以使图形可以分析.就像在OpenGL中一样,没有用于渲染文本的专用函数,我想出了使用QPainter对象只是为了已经创建的绘图添加了所需的描述.以下是开始的问题......

这是我的QopenGLWidget实现的功能:

void GLWidget::initializeGL() {
initializeOpenGLFunctions();
glEnable(GL_POINT_SPRITE);
glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

vertexShad = new QOpenGLShader(QOpenGLShader::Vertex);
fragmentShad = new QOpenGLShader(QOpenGLShader::Fragment);

bool flag = vertexShad->compileSourceFile(QString("vs.glsl"));
if (flag) printf("compiled vertex Shader\n");
flag = fragmentShad->compileSourceFile(QString("fs.glsl"));
if (flag) printf("compiled fragment Shader\n");
flag = program.addShader(vertexShad);
if (flag) printf("linked vertex Shader\n");
flag = false;
flag =program.addShader(fragmentShad);
if (flag) printf("linked fragment Shader\n");

program.link();
program.bind();
}
Run Code Online (Sandbox Code Playgroud)

paintGL:

void GLWidget::paintGL() {
painter = new QPainter(this);

painter->beginNativePainting();
glViewport(0, 0, this->width(), this->height());
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
drawAxes();
glViewport(MARGIN, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt qt5 visual-studio-2013

3
推荐指数
1
解决办法
3798
查看次数

为什么 CMake FILE(READ) 忽略文件中的分号?

我有一个 css 文件(我想解析它并适应 Qt,但这不是问题)。就说这个吧:

QLineEdit:hover:not(focus),
QWidget QPlainTextEdit:not(hover):not(focus) {
    border-color: #5575b0;
}
Run Code Online (Sandbox Code Playgroud)

我制作了一个 CMake 脚本来替换not(...)!...: 脚本的该部分工作正常。

问题是 CMake 删除了;行尾的分号 ()。当我做:

file(READ ${INPUT_FILE_PATH} CONTENT)
message(${CONTENT})
Run Code Online (Sandbox Code Playgroud)

不幸的是,输出是:

QLineEdit:hover:not(focus),
QWidget QPlainTextEdit:not(hover):not(focus) {
    border-color: #5575b0 // <-- missing comma here !
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么会发生这种情况?以及如何避免呢?

cmake

3
推荐指数
1
解决办法
1391
查看次数

在已包含一些文本的QTextEdit中显示QLineEdit中的文本并实时更新

将文本写入QLineEdit窗口小部件的过程是什么,在QTextEdit已包含某些文本的内部动态显示?

例如,让我们说一个人QLineEdit要求写一个"John"的名字.是否可以在QTextEdit包含的内容中实时显示:

这个名字是 + textFromQLineEdit+ ,24岁

显示的文本必须动态地考虑对其进行的更改,QLineEdit以便用户无需按下按钮或按Enter键以查看他/她的姓名.

以下是使用的信号中的两个小部件彼此连接的最小代码textChanged()QLineEdit与狭槽setText()QTextEdit(不允许用于添加一些文本之前和之后从文本QLineEdit):

#include <QLineEdit>
#include <QVBoxLayout>
#include <QGroupBox>
#include <QTextEdit>
#include <QApplication>

class SmallWindow : public QWidget
{
    Q_OBJECT
public:
    SmallWindow();
private:
    QLineEdit *nameLine;
    QTextEdit *textBox;
};

SmallWindow::SmallWindow() : QWidget()
{
    setFixedSize(300,250);
    QLineEdit *nameLine = new QLineEdit;
    QTextEdit *textBox = new QTextEdit;
    QWidget::connect(nameLine,SIGNAL(textChanged(QString)),textBox,SLOT(setText(QString)));
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(nameLine);
    layout->addWidget(textBox); …
Run Code Online (Sandbox Code Playgroud)

c++ qt qlineedit qtextedit

3
推荐指数
1
解决办法
3837
查看次数

无法连接基类信号

当我尝试连接BASE类信号时,Qt告诉我DERIVED类上不存在信号.

这是为什么?如何告诉connect使用BASE类?

namespace MyNamespace 
{

void register(Derived* derived)
{
    // ERROR MSG
    // QObject::connect: No such signal MyNamespace::Derived::baseSignal()

    QObject::connect( derived, SIGNAL(baseSignal()), 
                      foo,     SLOT(fooSlot())); 
}

class Base : public QObject
{
    Q_OBJECT

signals:
    void baseSignal();
};

class Derived : public QObject,
                public Base
{
    Q_OBJECT

signals:
    void derivedSignal();
};

} // namespace MyNamespace
Run Code Online (Sandbox Code Playgroud)

c++ qt

3
推荐指数
1
解决办法
2512
查看次数

如何将qm转换为ts文件?

我正在使用Qt 4.5将.ts文件翻译成.qm文件.但现在我丢失了.ts文件.

我怎样才能将其转换回-从.qm.ts

c++ qt translation qt5 qt5.4

3
推荐指数
2
解决办法
3079
查看次数

是否可以将QColor作为关键存储在QMap中

所以,我有简单的代码

QMap<QColor, int> colors;
for(int w = 0; w < image.width(); ++w)
    for (int h = 0; h < image.height(); ++h)
        colors[QColor::fromRgb(image.pixel(w,h))]++;
Run Code Online (Sandbox Code Playgroud)

错误消息是

不匹配'operator <'(操作数类型是'const QColor'和'const QColor').

因此,qMapLessThanKey尝试实例化两种颜色的比较器是不成功的,这是不可能的.

问题是:是否可以将QColor作为值存储在QMap中,而不是通过引用?

只是好奇.我知道如何以其他方式写出我想要的东西.但奇怪的是,在QT中我可以存储在地图中或不能存储的任何例外情况.

c++ qt qmap qcolor

3
推荐指数
1
解决办法
1024
查看次数

通过基类指针访问子类的成员函数

我正在尝试编写一个使用DOM来编写注册列表的类,以XML格式存档.注册列表包含三种类型的注册Registration,它们是标准的基本注册类GuestRegistration,StudentRegistration它们都来自Registration.

GuestRegistration班级有一个独特的成员category,学生注册有独特的成员qualification.

当我遍历注册指针列表时,我只能访问基类Registration的成员函数.有没有什么办法可以访问子的数据成员使用getter函数getCategorygetQualification?每当类名与两者中的任何一个匹配时,我都尝试创建一个GuestRegistrationStudentRegistration指针,但是得到一个指针转换错误.

void RegistrationListWriter::write(RegistrationList r) {
    QList<Registration*> regList = r.getRegistrationList();

    for (int i = 0; i < regList.size(); ++i) {
        QString cn = regList.at(i)->metaObject()->className();
        Person tempPerson = regList.at(i)->getAttendee();

        appendRegistrationAndType(cn);
        appendAttendee(tempPerson);
        //this is where my issue starts
        if (cn == "GuestRegistration") {
            GuestRegistration guestReg = regList.at(i);
            appendAttendeeCatagory(guestReg.getCatagory());
        }

        if (cn == "StudentRegistration") {
            StudentRegistration* stuReg = …
Run Code Online (Sandbox Code Playgroud)

c++ qt

3
推荐指数
1
解决办法
121
查看次数

是否可以在 NASM 中使用 DB 指令在 .text 段中创建可写变量?

我试过.text使用 eg在段中声明变量file_handle: dd 0

但是,尝试在此变量中存储某些内容会mov [file_handle], eax导致写入错误。

我知道,我可以在.data段中声明可写变量,但为了使代码更紧凑,我想像上面一样尝试。

是使用堆栈来存储这些值(例如文件句柄)的唯一可能性,还是我可以以某种方式写入上面的变量?

windows x86 assembly nasm

3
推荐指数
1
解决办法
840
查看次数

标签 统计

qt ×8

c++ ×7

qt5 ×2

assembly ×1

cmake ×1

nasm ×1

opengl ×1

qcolor ×1

qlineedit ×1

qmake ×1

qmap ×1

qset ×1

qt5.4 ×1

qtextedit ×1

translation ×1

visual-studio-2013 ×1

windows ×1

x86 ×1