小编KcF*_*nMi的帖子

删除指针内存并确认

考虑以下因素:

tbModelHFrame = new TbModelHeaderFrame(this, storage->getDataBase());
Run Code Online (Sandbox Code Playgroud)

我想删除tbModelHFrame内存的正确方法是

delete tbModelHFrame;
Run Code Online (Sandbox Code Playgroud)

对?

如何检查内存是否真正发布?

c++ qt pointers memory-management

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

printf()vs qDebug()在QtCreator中执行的顺序

鉴于以下电话:

printf ("Characters: %c %c \n", 'a', 65);    
qDebug() << "adcasd";
Run Code Online (Sandbox Code Playgroud)

为什么我在QtCreator应用程序输出中看到以下(反向)输出?

adcasd
Characters: a A
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

QFormLayout中自定义QWidget,垂直对齐问题

我想在 QFormLayout 的一行中使用定制的 QWidget。下面的代码展示了一个表单布局,其中第一行有一个 QLineEdit,第二行有一个定制的小部件:

问题是定制的小部件没有垂直对齐。如何垂直对齐?

项目.pro:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = CustomLineEdit
TEMPLATE = app

SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

主程序

#include <QApplication>

#include <QHBoxLayout>
#include <QFormLayout>
#include <QLineEdit>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;

    QFormLayout *formLayout = new QFormLayout(&w);

    QLineEdit *leUser = new QLineEdit;

    QWidget *widget = new QWidget;
    QHBoxLayout *hLayout = new QHBoxLayout(widget);
    hLayout->addWidget(leUser);
    hLayout->addWidget(new QPushButton);

    formLayout->addRow("Text:", new QLineEdit);
    formLayout->addRow("User:", widget);

    w.show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

qt qwidget

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

QSqlDatabase:未在 Ubuntu 15.04 64 位上加载 QMYSQL 驱动程序

在 Ubuntu 15.04 64 位中,我安装了 Qt5.6(在线安装程序),在尝试将我的开发环境从 Windows 7 移动到 Linux 时,我遇到了以下问题:

SqlDatabase: QMYSQL driver not loaded
Run Code Online (Sandbox Code Playgroud)

之后,我设法找到 ~/Qt/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so然后:

$ ldd libqsqlmysql.so
    linux-vdso.so.1 =>  (0x00007ffffd571000)
    libmysqlclient_r.so.16 => not found
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe94ef24000)
    libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fe94ecec000)
    libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fe94ead2000)
    libssl.so.10 => not found
    libcrypto.so.10 => not found
    libQt5Sql.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007fe94e88d000)
    libQt5Core.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007fe94e17a000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe94df5c000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe94dc4d000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe94d944000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe94d72e000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe94d364000)
    libicui18n.so.56 …
Run Code Online (Sandbox Code Playgroud)

c++ linux ubuntu qt qt5.6

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

func(QWidget*const&widget)VS func(QWidget*const widget)

我注意到代码的安静甚至丢弃了&符号/参考信号.

QWidget* widget;
func(widget);
Run Code Online (Sandbox Code Playgroud)

以下表达式是否相同?

func(QWidget* const &widget)
func(QWidget* const widget)
Run Code Online (Sandbox Code Playgroud)

我知道这两个指针都无法修改为可以修改的东西.

专注于两者的实际效果的答案将更有价值.

c++ qt qmap c++11 qt5

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

跟踪多个存储库中的相同文件

假设我已repo1被跟踪(它包含 .git)。

然后,在其中,我project1从 github 下载。它有自己的 .git 文件夹(我可能会忽略它?)。

继续,我将添加project1repo1.

此时,我会说project1多个存储库正在跟踪中的文件。

我在这里做了一些测试,没有任何问题,显然这种情况可以继续进行。我可以在两个存储库中提交。显然一切都还算顺利。

我是不是忘记了什么?这有危险吗?

git version-control

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

C++ 17如果为while循环的init?

对于一些家庭工作,我正在做以下事情:

int main() {

    ofstream file("log.txt");

    file << setw(5)  <<  "i"
         << setw(15) <<  "h"
         << setw(15) <<  "n"
         << setw(15) <<  "sum"
         << setw(15) <<  "diff"
         << endl;

    auto write2file = [&file](int i, double h, double n, double sum, double diff) {
        file << setw(5)  << i
             << setw(15) << h
             << setw(15) << n
             << setw(15) << sum
             << setw(15) << diff
             << endl;
    };

    double a = 0;
    double b = 2;
    int n = 1;
    double …
Run Code Online (Sandbox Code Playgroud)

c++ c++14 c++17

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

如何检查两个矩阵是否相同?

想法是将两个矩阵相乘。并使用 Eigen 进行相同的乘法,然后检查结果是否相同。

在下面制作N = 2返回same thingN = 1000返回NOT same thing。为什么?

#include <cstdlib>
#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

const int N = 1000;

void mult_matrix(double x[N][N], double y[N][N], double z[N][N]) {
    int rows = N;
    int cols = N;
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            for (int k = 0; k < cols; k++)
                z[i][j] …
Run Code Online (Sandbox Code Playgroud)

c++ matrix eigen c++11 c++14

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

如何将C函数指针迁移到C++?

以下是在C中使用函数指针:

#include <stdio.h>
void bar1(int i){printf("bar1 %d\n", i+1);}
void bar2(int i){printf("bar2 %d\n", i+2);}
void foo(void (*func)(), int i) {func(i);};
int main() {
    foo(bar2, 0);
}
Run Code Online (Sandbox Code Playgroud)

它编译$gcc main.c.

以下是我尝试将其迁移到C++:

#include <cstdio>
void bar1(int i){printf("bar1 %d\n", i+1);}
void bar2(int i){printf("bar2 %d\n", i+2);}
void foo(void (*func)(), int i) {func(i);};
int main() {
    foo(bar2, 0);
}
Run Code Online (Sandbox Code Playgroud)

试图编译它,我得到错误:

$ g++ main.cpp
main.cpp:7:39: error: too many arguments to function call, expected 0, have 1
void foo(void (*func)(), int i) {func(i);};
                                 ~~~~ ^
main.cpp:10:2: error: …
Run Code Online (Sandbox Code Playgroud)

c c++ pointers function-pointers

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

重建还是清理并建造?

在 QtCreator 上,Build菜单,我看到

Rebuild Project 
Run Code Online (Sandbox Code Playgroud)

还有

Clean Project 
Run Code Online (Sandbox Code Playgroud)

Build Project
Run Code Online (Sandbox Code Playgroud)

我从来不知道我是否应该Clean Project或者Buid Project只是Rebuild Project,有什么区别吗?

(个人意见:如果Rebuild是的Clean话,Build我不介意是否Rebuild被删除。我可以通过每个步骤的快捷方式快速完成)

c++ qt qmake qt-creator c++17

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