小编IMA*_*N4K的帖子

应用编译器优化时,google breakpad 堆栈跟踪中没有符号

Google breakpad这样的崩溃报告工具的主要目的是从剥离的二进制文件中生成核心转储或小型转储文件,以便稍后使用调试符号进行处理。通常这些二进制文件是应用了编译器优化的发布版本,也被剥离了。

要在 Linux 上重现该问题:

1.构建+安装google breakpad:

git clone https://chromium.googlesource.com/breakpad/breakpad && cd breakpad
git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss
./configure --prefix=/usr/local
make -j$(nproc) && sudo make install
Run Code Online (Sandbox Code Playgroud)

2.代码:

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(BreakPadTest)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_VERBOSE_MAKEFILE TRUE)
set(BREAKPAD_DIR "/usr/local/include/breakpad")
   
option(OPTION_WITH_O1 "With -O1" OFF)
if(OPTION_WITH_O1)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer")
endif()

include_directories(
    ${BREAKPAD_DIR}
    )

add_executable(${PROJECT_NAME} "main.cc")

target_link_libraries(${PROJECT_NAME}
    -lstdc++fs
    -pthread
    libbreakpad_client.a
    )
Run Code Online (Sandbox Code Playgroud)

main.cc

#include <thread>
#include <experimental/filesystem>

#include <client/linux/handler/exception_handler.h>

namespace breakpad = google_breakpad;
namespace filesystem = std::experimental::filesystem;

static …
Run Code Online (Sandbox Code Playgroud)

c++ crash-reports debug-symbols google-breakpad

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

QPainter :: drawPixmap()看起来不太好,质量低?

我想画一个内部的图标文件(.png)QWidgetQPainter::drawPixmap() :

QPixmap _source = "/.../.png";
painter.setRenderHint(QPainter::HighQualityAntialiasing);
painter.drawPixmap(rect(), _source);
Run Code Online (Sandbox Code Playgroud)

但与QLabel(例如)和较小尺寸(在我的情况下为19*19)相比,结果并不完美.

我能做什么?

****编辑****

QLabel 与pixmap @ size 19*19:

在此输入图像描述

我的绘画@ size 19*19通过SmoothPixmapTransform渲染类型:

在此输入图像描述

qt qwidget qpixmap qpainter qt5.5

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

更改QSortFilterProxyModel行为以进行多列过滤

我们QSortFilterProxyModelQTableView和上安装了一个(两个或多个)QLineEdit以过滤视图(基于这些QLineEdit的文本)

在我们看来,我们有一个插槽可以告诉我们lineedits字符串和所需的当前列。像这样的东西:

void onTextChange(int index, QString ntext) {
    filter.setFilterKeyColumn(index);
    filter.setFilterRegExp(QRegExp(ntext, Qt::CaseInsensitive));
}
Run Code Online (Sandbox Code Playgroud)

在第一列中,我们有生日,第二列中,有名字。

现在,我们为第2列输入年份(例如1985)。到目前为止,过滤还可以,但是当我们切换到第一个lineedit并输入名称(例如john)时,基于年份的先前过滤将重置。

我们如何改变这种习俗的行为QSortFilterProxyModel

(实际上,当我们更改过滤器键列时,filtermodel必须过滤现有视图而不重置它)

更新中...

根据@Mike的回答:如果您与未知的列数进行交互,QMap<int, QRegExp>将有助于您

qt qtableview qt5 qsortfilterproxymodel

5
推荐指数
2
解决办法
6237
查看次数

处理接近大型数据集时加快 QSortFilterProxyModel 过滤速度

之前,我询问a question过多列过滤,我们需要表示适合多个过滤模式的行。

现在,在处理大表(big我的意思是大约 200,000 行和 4 列)时,如果我们有一个那么大的表,过滤就会变慢(通常这对于过滤模式的前 2 个字符来说是最糟糕的)。

那么您对此有何建议?

注意:我有自己的高性能源数据模型(而不是QStandardItemModel),基于this示例,该模型在大约 1 秒内提供我对该行数的视图

编辑1

改变我的方法:

bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const {
if (/* filtering is enable*/) {
    bool _res = sourceModel()->data(sourceModel()->index(source_row, 0, source_parent)).toString().contains( /*RegExp for column 0*/);
    for (int col = 0; col < columnCount(); col++) {
        _res &= sourceModel()->data(sourceModel()->index(source_row, col + 1, source_parent)).toString().contains(/*RegExp for column col + 1*/);
    }
    return _res;
}
return true;
Run Code Online (Sandbox Code Playgroud)

}

对此:

bool DataFilter::filterAcceptsRow(int source_row, …
Run Code Online (Sandbox Code Playgroud)

c++ qt qabstractitemmodel qt5 qsortfilterproxymodel

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

为什么Qt Configure在交叉编译时无法在目标上找到正确的MySQL安装?

我想建立MySQL驾驶员在交叉编译Qt5Arm(Raspberry Pi)

  • 为了检查MySQL目标上的客户端库安装,我们运行:
pi@raspberrypi:~ $ mysql_config --version
10.1.38
pi@raspberrypi:~ $ mysql_config --include
-I/usr/include/mysql
pi@raspberrypi:~ $ mysql_config --libs
-L/usr/lib/arm-linux-gnueabihf  -lmariadbclient -lpthread -lz -lm -ldl
Run Code Online (Sandbox Code Playgroud)
  • 我们这样配置Qt
../configure -opengl es2 -device linux-rpi3-g++ -device-option CROSS_COMPILE=$RPI_TOOLCHAIN -no-use-gold-linker -qt-xcb -xcb -sysroot $RPI_SYSROOT -opensource -confirm-license -nomake examples -nomake tests -release -make libs -prefix /usr/local/qt5pi -sql-mysql -recheck-all
Run Code Online (Sandbox Code Playgroud)
  • 配置将抛出错误:
ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed
Run Code Online (Sandbox Code Playgroud)

注意:

  • 如果我们看一下,config.log似乎Qt Configure会在主机而不是sysroot或target中寻找MySQL!
[...]
looking for library mysql …
Run Code Online (Sandbox Code Playgroud)

qt libmysql qtsql qt5 raspberry-pi

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

QPushButton的背景颜色是否会逐渐变化?

我厌倦了搜索!

我从QPushbutton继承了一个Button并将我的QSS设置为它.这种风格是理想的.

所有我想要的是当按钮悬停(enterevent)按钮的颜色在特定时间(例如0.2秒)的颜色变化不是立即(软颜色变化)

我该怎么办 ?

*******在PyQt4中回答*********

class MyButton(QPushButton):
    def __init__(self):
        super(MyButton, self).__init__()
        self.setMinimumSize(80,50)
        self.setText('QPushButton')

    def getColor(self):
        return Qt.black

    def setColor(self, color):
        self.setStyleSheet("background-color: rgb({0}, {1}, {2});border:none;".format(color.red(), color.green(), color.blue()))

    color=QtCore.pyqtProperty(QColor, getColor, setColor)

    def enterEvent(self, event):
        global anim
        anim=QPropertyAnimation(self, "color")
        anim.setDuration(200)
        anim.setStartValue(QColor(216, 140, 230))
        anim.setEndValue(QColor(230, 230, 230))
        anim.start()

    def leaveEvent(self, event):
        self.setStyleSheet("background:none;")
Run Code Online (Sandbox Code Playgroud)

qt pyqt qpushbutton pyqt5

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