小编Ale*_*r V的帖子

如何在C++ 11中终止线程?

我不需要正确终止线程,或使其响应"终止"命令.我有兴趣使用纯C++ 11强制终止线程.

c++ multithreading c++11

121
推荐指数
5
解决办法
16万
查看次数

如何开发新的Qt 5.7+ High-DPI Per Monitor DPI Aware应用程序?

我已经阅读了有关Qt中高DPI支持的StackOverflow上的官方Qt文档和许多文章和问题.所有这些都专注于移植旧应用程序并使它们尽可能少地进行更改.

但是如果我要开始一个全新的应用程序,打算支持每个监视器的DPI感知应用程序,最好的方法是什么?

如果我理解正确,Qt::AA_EnableHighDpiScaling则与我想要的完全相反.我应该实际禁用HighDpiScaling并在运行时手动计算所有尺寸?

许多建议都表示不使用尺寸,使用浮动布局.但是在许多情况下,希望存在至少最小宽度和/或最小高度.由于Qt Designer只允许我将值放在绝对像素中,所以正确的方法是什么?如果显示器分辨率发生变化,我应该在何处放置代码重新计算尺寸?

或者我应该选择自动缩放?

我以前的Qt应用程序的解决方案(未经过充分测试)

在我尝试添加HighDPI支持的一个较旧的应用程序中,我使用了这种方法 - 列出DOM的所有子项,并在给定比例的情况下逐个调整它们的大小.Ratio = 1将产生与我在Qt Designer中指定的尺寸相等的尺寸.

    void resizeWidgets(MyApp & qw, qreal mratio)
    {

        // ratio to calculate correct sizing
        qreal mratio_bak = mratio;

        if(MyApp::m_ratio != 0)
            mratio /= MyApp::m_ratio;

        // this all was done so that if its called 2 times with ratio = 2, total is not 4 but still just 2 (ratio is absolute)
        MyApp::m_ratio = mratio_bak;

        QLayout * ql = qw.layout();

        if (ql == NULL)
            return; …
Run Code Online (Sandbox Code Playgroud)

c++ qt highdpi

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

创建没有标题栏的窗口,可调整边框,没有虚假的6px白色条纹

我想要一个没有标题栏但有可调整大小的框架和阴影的窗口.这可以通过删除WS_CAPTION和添加WS_THICKFRAME轻松实现,但是,从Windows 10开始,有一个6px的白色非客户区域.

使用以下代码我创建一个窗口并用黑色绘制所有客户区域,窗口获得左,右和底部6px透明边距,但是上边距是白色.

#ifndef UNICODE
#define UNICODE
#endif 

#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
    // Register the window class.
    const wchar_t CLASS_NAME[]  = L"Sample Window Class";

    WNDCLASS wc = { };

    wc.lpfnWndProc   = WindowProc;
    wc.hInstance     = hInstance;
    wc.lpszClassName = CLASS_NAME;

    RegisterClass(&wc);

    // Create the window.

    HWND hwnd = CreateWindowEx(
        0,                              // Optional window styles.
        CLASS_NAME,                     // Window class
        L"",    // Window text
                0,
        // …
Run Code Online (Sandbox Code Playgroud)

winapi gdi paint windows-10

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

如何在 QT Creator 中自动包含所需的标题

我在 QT Creator 中有一个项目,我希望在使用新对象时自动包含头文件。这就像在 Eclipse 中:在使用 Ctrl+Alt+Space 调用新对象时添加所需的标题:将包含所有需要的标题。

这是一个例子

#include <QApplication>
#include <QPushButton>  /* Header that i want to include automatically */

 int main( int argc, char *argv[ ] )
{
    QApplication app( argc, argv) ;
    QWidget fenetre;
/*Add needed headers when invoking a new object like ctrl+alt+space in eclipse*/
    QPushButton bouton( "Bonjour", &fenetre) ;
    bouton. move(70,60);
    fenetre. show( ) ;
    return app. exec( ) ;
}
Run Code Online (Sandbox Code Playgroud)

关于如何在 QT Creator 中执行此操作的任何建议?谢谢

c++ qt header qt-creator qpushbutton

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

每个 QT 小部件是否都有“显示”信号?

当对话框显示何时打开或从最小状态最大化或从屏幕移出时,我想执行一些操作。

QT有这种信号吗?我也不知道在哪里可以找到 QT 是否定义了信号列表。

c++ qt

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

问:如何应用两步键快捷键来实现操作

我知道如何将键盘快捷键应用于动作.在某些软件(如Visual Studio)中,有一些快捷方式可以在多个步骤中完成工作(例如Ctrl+K,Ctrl+C对代码进行注释).

Sublime Text的另一个例子:

我想知道是否可以在Qt中实现.

user-interface qt

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

如何在Qt中设置应用程序图标

尝试为我的QT应用程序设置图标时遇到一些麻烦。

该图标名为“ room.ico”,与源文件位于同一目录中。

这是代码:

#include <QApplication>
#include <QWidget>

int main( int argc, char *argv[ ] )
{
   QApplication app( argc, argv) ;
   QWidget fenetre;
   fenetre.setWindowIcon(QIcon("room.ico")); // Nothing happens
   fenetre.setWindowTitle("Heloo");    
   fenetre.show();
   return app.exec() ;
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加win32:RC_ICONS += room.ico.pro file但是没有用。我也尝试过,"./room.ico"但仍然没有图标。

我试图用这个:

QPixmap pixmap = QPixmap ("room.ico");
fenetre.setWindowIcon(QIcon(pixmap));
Run Code Online (Sandbox Code Playgroud)

你猜怎么着 !!!它没有用...我只是QT的新手:p

任何建议将不胜感激,谢谢

c++ qt qpixmap qicon qapplication

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

从内存中的SVG内容创建QIcon

我们如何创建QIcon在内存缓冲区中具有SVG图标内容的对象?

PS最初想创建QSvgIconEngine,但是它隐藏在插件层中,因此我无法显式创建它。我该如何从插件加载(考虑到该插件已加载)来完成呢?

c++ plugins qt

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

根据QObject调整qtvirtualkeyboard的大小

我正在使用 qml qtvirtual 键盘: https: //github.com/qt/qtvirtualkeyboard

我正在尝试将它与基于小部件的 Qt 应用程序的其余部分“连接”。例如,当我单击 QLineEdit 时,我希望键盘显示出来并在应用程序上下文中像物理键盘一样工作。

为此,我安装了 qtvirtualkeyboard/src 中的内容(qmake && make && make install),这是我的 main.cpp :

#include <QQuickView>
#include <QApplication>
#include <QQmlEngine>
#include <QQmlContext>

int main(int argc, char *argv[]){

    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QApplication app(argc, argv);
    MainWindow w();  // This is a QWidget / QMainWindow
    w.setFixedSize(800, 480);
    w.show();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

当我在桌面上执行此操作时,键盘占据了我屏幕的一半,尽管我的应用程序是 800x480。

当我在带有 7 英寸触摸屏的 Raspberry Pi 上执行它时,键盘占据了页面的一半,并且顶部出现黑色边框。

我想自己修复键盘尺寸。当我创建带有项目等的 QML 文件时,键盘不再显示。

c++ qt qtvirtualkeyboard

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