我得到以下C++代码的"分段错误":
#include <cstdio>
int main(int, char**) {
FILE *fp;
fp = fopen("~/work/dog.txt", "w");
fprintf(fp, "timer, timer3, timer5, timer6, timer7");
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud) 我正在我的Android应用程序中实现备份/恢复系统.
每隔几分钟就会发生一次自动备份.在我的应用程序被卸载然后再次安装之后,我正在尝试从我的SD卡恢复我的数据库备份文件.
备份有效,但问题在于:
每当用户再次安装我的应用程序时,就会发现文件未找到异常,但是,如果用户关闭应用程序,然后再次打开它,则恢复就可以了.不知何故,恢复首次启动应用程序时会遇到问题.
还原必须在首次启动时进行.
注意: backupExists函数返回true.
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(backUpExists()){
restoreDB();
}
}
private boolean backUpExists()
{
try{
File sd = Environment.getExternalStorageDirectory();
if (sd.canRead()){
String backupDBPath = "myDB";
File backupedDB = new File(sd, backupDBPath);
if(backupedDB.exists()){
return true;
}
}
} catch(Exception ex) {
Toast.makeText(getBaseContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
return false;
}
private void restoreDB()
{
try{
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String restroredDBPath = "//data//myPackage//databases//myDB";
String backupDBPath = "myDB"; …Run Code Online (Sandbox Code Playgroud) sqlite android database-restore database-backups android-sdcard
我有一个不想在屏幕上显示的 QWidget。相反,我想在每次重新绘制小部件时获取它的像素图,以便将其发送到我正在处理的应用程序的另一部分。API 提供了两种方法:QPixmap::grabWidget和QWidget::render
问题是这两种方法都会触发一个新paintEvent的小部件,创建小部件的递归重绘,所以它们不应该在paintEvent方法中使用。
那么我怎么能在每次重新绘制小部件时获得一个代表小部件的像素图呢?
我想在VS2012下完全静态构建Qt 4.8/5.2 - 包括静态运行时库,以及针对Windows XP系统.Qt不支持开箱即用,因为即使Qt的静态构建也使用动态链接的MSVC运行时.
这是一个规范性问题,提供了成功构建满足这些要求的Qt所需的知识.
QMAKE_CXXFLAGS在编译 .cpp 文件时应用,但不适用于 .mm 文件。我应该使用哪个标志?
我正在尝试实现全局热键激活时截图的功能。我将其应用到我的项目中,这样我就可以轻松创建全局热键。
要使用 screen->grabWindow(),我必须获取活动窗口的 WinID。所以我找到了 QApplication::activeWindow()->winId() 然后使用它。
QScreen *screen = QGuiApplication::primaryScreen();
QPixmap screenShot = screen->grabWindow(QApplication::activeWindow()->winId(), 0, 0, -1,-1);
Run Code Online (Sandbox Code Playgroud)
然而,事情正在朝着错误的方向发展。当我在其他窗口中按下热键时,程序崩溃并显示“untitled2.exe已停止工作”。(抱歉无法放置图像[ http://ww2.sinaimg.cn/large/bcbe8e8cgw1euarn4mcb6j20vt09ojtk。 ])
我发现即使我简单地 qDebug() 也会发生同样的情况。不仅是winId(),还有windowTitle()、setWindowTitle()等。
qDebug() << QApplication::activeWindow()->winId();
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决一下吗?多谢!
我发布了一个继承自QEvent使用的自定义事件QCoreApplication::postEvent.我曾经读过,在使用postEvent它时需要有堆分配的事件.但我不确定谁有责任释放它.
所以,我试着用std::shared_ptr.但是,当我创建我的事件时std::shared_ptr,我收到此错误:
double free or corruption (fasttop)
Run Code Online (Sandbox Code Playgroud)
这是否意味着QEvent可以自由地释放事件,以便我可以创建事件而不必费心删除它?
这是代码的样子:
class MyCustomEvent : public QEvent {...}
std::shared_ptr<MyCustomEvent> evt(new MyCustomEvent(arg1, arg2)); // double free or corruption!
QCoreApplication::postEvent(targetObj, evt.get());
Run Code Online (Sandbox Code Playgroud) Qt Creator的向导和配置设置支持变量扩展,包括JavaScript表达式的评估,例如C++类向导文件模板包含:
%{JS: Cpp.openNamespaces('%{Class}')}
Run Code Online (Sandbox Code Playgroud)
Cpp似乎是一个全球性的对象.Qt Creator中的来源是那些定义的,哪些可用?
这些都没有记录在任何地方
我有一个 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)
任何人都知道为什么会发生这种情况?以及如何避免呢?
当我尝试连接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)