考虑以下因素:
tbModelHFrame = new TbModelHeaderFrame(this, storage->getDataBase());
Run Code Online (Sandbox Code Playgroud)
我想删除tbModelHFrame内存的正确方法是
delete tbModelHFrame;
Run Code Online (Sandbox Code Playgroud)
对?
如何检查内存是否真正发布?
鉴于以下电话:
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) 我想在 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) 在 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) 我注意到代码的安静甚至丢弃了&符号/参考信号.
QWidget* widget;
func(widget);
Run Code Online (Sandbox Code Playgroud)
以下表达式是否相同?
func(QWidget* const &widget)
func(QWidget* const widget)
Run Code Online (Sandbox Code Playgroud)
我知道这两个指针都无法修改为可以修改的东西.
专注于两者的实际效果的答案将更有价值.
假设我已repo1被跟踪(它包含 .git)。
然后,在其中,我project1从 github 下载。它有自己的 .git 文件夹(我可能会忽略它?)。
继续,我将添加project1到repo1.
此时,我会说project1多个存储库正在跟踪中的文件。
我在这里做了一些测试,没有任何问题,显然这种情况可以继续进行。我可以在两个存储库中提交。显然一切都还算顺利。
我是不是忘记了什么?这有危险吗?
对于一些家庭工作,我正在做以下事情:
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) 想法是将两个矩阵相乘。并使用 Eigen 进行相同的乘法,然后检查结果是否相同。
在下面制作N = 2返回same thing但N = 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中使用函数指针:
#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) 在 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被删除。我可以通过每个步骤的快捷方式快速完成)