Skip to content
  • 0 Votes
    8 Posts
    232 Views
    Pl45m4P

    @StudentScripter

    From QRHI :

    Each QRhi instance is backed by a backend for a specific graphics API. The selection of the backend is a run time choice and is up to the application or library that creates the QRhi instance.

    See also the example:

    #if QT_CONFIG(vulkan) QVulkanInstance inst; #endif // ... // ... // ... // ... #elif QT_CONFIG(vulkan) inst.setExtensions(QRhiVulkanInitParams::preferredInstanceExtensions()); if (inst.create()) { QRhiVulkanInitParams params; params.inst = &inst; rhi.reset(QRhi::create(QRhi::Vulkan, &params)); } else { qFatal("Failed to create Vulkan instance"); } #endif if (rhi) qDebug() << rhi->backendName() << rhi->driverInfo(); else qFatal("Failed to initialize RHI");

    So it's up to YOU (the developer) to chose a backend (or leave it dynamic)...
    If you force the use of Vulkan and further only use the Vulkan API, you program/code only works with Vulkan

    and like @SGaist said above... if no Vulkan SDK or libs are found or the system is incompatible with Vulkan at all, your program won't work (you need to handle that also... for example like shown in my example via defines and error handling)

  • 0 Votes
    2 Posts
    130 Views
    SGaistS

    Hi,

    Well, the undo framework allows you to go back and forth in a controlled fashion. You can have multiple different commands based on your various workflows that can be handled by a single stack. There's a model that you can visualize while developing the feature.

  • 0 Votes
    1 Posts
    426 Views
    No one has replied
  • 0 Votes
    26 Posts
    5k Views
    SGaistS

    @StudentScripter great !

    Then please mark the model as solved using the "Topic Tools" button or the dotted menu beside the answer you deem correct so that other forum users may know a solution has been found :-)

  • 0 Votes
    5 Posts
    700 Views
    JonBJ

    OP's Ubuntu should support stat file for Birth. See e.g. How to Find Out When a File Was Created in Linux for a recent discussion of the issues.

  • 0 Votes
    3 Posts
    328 Views
    S

    @Pl45m4 Worked like a charm, thank you very much. :)

  • 0 Votes
    14 Posts
    2k Views
    jeremy_kJ

    @ECEC said in Binding C++ objects in std::vector to QML components:

    @jeremy_k

    I'm not too sure what benefit you are suggesting QStandardItemModel would have over subclassing QAbstractListModel.

    The only advantage is less stuff to write and maintain. I count 6 lines of code above, including headers, specific to the standard item model.

  • 0 Votes
    4 Posts
    442 Views
    S

    @jsulm

    Here is Reproducible Example

    #include <QApplication> #include <QSslServer> #include <QDialog> #include <QSslKey> #include <QMessageBox> int main(int argc, char **argv) { // create an Application QApplication app(argc, argv); // set the ssl configuration auto config = QSslConfiguration(); // set certificate config.setLocalCertificate(QSslCertificate::fromData(QByteArray::fromStdString(R"( -----BEGIN CERTIFICATE----- MIIDITCCAgmgAwIBAgIVAMdt4c6oGd0rUSbR+/tBVfhny3K3MA0GCSqGSIb3DQEB BQUAMEoxGDAWBgNVBAMMD0xBUFRPUC1KQzJNMzcyQTEbMBkGA1UECgwSc3JpbGFr c2htaWthbnRoYW5wMREwDwYDVQQLDAhjbGlwYmlyZDAeFw0yMzA5MDgxMTQ4NDZa Fw0yNDA5MDcxMTQ4NDZaMEoxGDAWBgNVBAMMD0xBUFRPUC1KQzJNMzcyQTEbMBkG A1UECgwSc3JpbGFrc2htaWthbnRoYW5wMREwDwYDVQQLDAhjbGlwYmlyZDCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkFDUKmzz+NE0x7o5JGgE8KZ/cB GEtTwN2cElMESQ/MZe3ohIE5GdFkld/7894wXZAJkXu38oZVEQ/AurntqqSHT4iP 7qMUJGYjo2v2g/1JwU3E/sG+IjatOjyl8b0b+E9TmDt7XOS4VWz3vjTkXwmQTzUv 3L5myfdcmBpA9AOXxH8yHq9lcBl97ZHGWA4zI9uWnwtyFWSl8DX4H/y14+itEYwH n6xLsEBxqjx40G7WR0AiAYRdE5Yvr6QOGtFAeODFqOv/2sAxdm/7P1wHjIvyOB++ eufvPyWZpzeBfEvrIeGkj91YGAV7FQsOfCuzetGgZcLiBDAZKjnKEQ2oajUCAwEA ATANBgkqhkiG9w0BAQUFAAOCAQEAD/SYccAb3K6GKyfc9Rbaj44IxpsNlHDQAr5b c8Nmz+LW905EqFe6tAhCgi3q9o3HUUeiNHe0rYad3Lgd1setSOVdWiSbxArmELgW Dg3NGd3GIIRShvmZfSHRkpvKaD9j06CVzMrM0nZsjQVcQrKlFBUJ9UEqVmmcz1nU a4yUEQ9Rb7t4Icw7aD07NqLRlhNGCii4d12NAY7kRZdLdtTw7T/j4tXxmcJsOiWK Lx/cqqTBgBHc3l3EeylQdO17pFClY5yMUGGla7LPcDm1sU4mmFEKmkjcRGu+mQM2 V3EDgh37GyTWvs6Zf86B14m/US0Ff4vQu26vco5Pjk3xKckA+Q== -----END CERTIFICATE----- )")).first()); // set private key config.setPrivateKey(QSslKey(QByteArray::fromStdString(R"( -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAuQUNQqbPP40TTHujkkaATwpn9wEYS1PA3ZwSUwRJD8xl7eiE gTkZ0WSV3/vz3jBdkAmRe7fyhlURD8C6ue2qpIdPiI/uoxQkZiOja/aD/UnBTcT+ wb4iNq06PKXxvRv4T1OYO3tc5LhVbPe+NORfCZBPNS/cvmbJ91yYGkD0A5fEfzIe r2VwGX3tkcZYDjMj25afC3IVZKXwNfgf/LXj6K0RjAefrEuwQHGqPHjQbtZHQCIB hF0Tli+vpA4a0UB44MWo6//awDF2b/s/XAeMi/I4H7565+8/JZmnN4F8S+sh4aSP 3VgYBXsVCw58K7N60aBlwuIEMBkqOcoRDahqNQIDAQABAoIBADf6I0zrEwDzOceG ELMMyX0gdNvyZNtFd7CUq6aaQVCaUqxsEMrX78u+VunxXJL4pxYRDwcTXDjwO708 XkIqedpVZea3RUfprCmK1sKvTrevPOC+nSUY1Vkdh+UZf83rTHETpZc5d51rd80E F3QBNA+8rXo2BN9GUgyY4xvuUuVS3drVZ6WA9A9yPtaBgeLATqmb0Ckh2aVn+XG9 eYIxiF0Sfnb3HET7IDO+Xtw8OIygq+dT9v5LMMYf/Aa8aakJMoTK6SLbjFWs5gUj mhBSBdxqdmLLTa2E+3hrZOfgQ0tk85336n7v3dFKkhTMr9KztOIh53Ruh36gR3UT QxbCyvECgYEA2uKcFmrkGa61WarqSbB58e/m111cmlcjOSoEELwb+O1pLe8qqDSZ UeLVMRW+omdyvt0N1RaDEOsBWtgup2RntutEx8sAi5O1d+CrCLZ7xZJPSrYH4tIs YFXoBgCNqn+275ZdeL5LgxuFKAstFW9YbWpsXCEPbrIMBk4Xm3m3Pt8CgYEA2GRo I+lLPvcslTwens+5sXT5+EPTcY9Ss2jSz3njEIt4asxa/P4H7Xx2EWqMQg5LGSVD MP8L9lxCSiyYvrQhYAQZq2VqvVCejFkrWY8hntDvyhJ26SfanSdMB1MVWOc16dns wjuuX3+5QIQoMogL1eng6/VOOJHVfiAh57yqPWsCgYEAkcI54wvHXfrjtRSF9BBb BGuXM29ujTDdueFq16IMlpWyZu5PX7e3Kbp98bPjQM7WsJcP8QiOuyNjwZUYbEwG bN767HkYodn5DB1GiATNI2Is/zl8wuTmvDg4zFZuAE4QCjf9grxmGKao42Od4BpH roUiJ6+0USirrT8vpU9GYc0CgYAYuIfJKnrFK7m1JtQcsoB1THbOLPl37La29k+3 EialmjlcghIW+vJu6BwY60Iwva9IpSAi9dApCesszCF7D9sMPAuur/xculwSjpFM PvTJTvdF74wUINBxya5+27gBmxBmsdXBbs4B7PZ971skQrSPcJOYgUK5ZbetHACj l8MfFwKBgQC3g39rKU/iahrr5VcbLecsdv9jhSo+PANQOXhreEZTOF1spsWh9bMN 11MB0uZu99p4Solvv0M11Md++CO3ocBRT0AsdsdLdytAb+YWM+c1ls5dhjVnaMpL dKKHiQ7sfiPM05f6HuTmMuinSLw7f1Ff7GVJUMugJCqiNn3XO3jWGQ== -----END RSA PRIVATE KEY----- )"), QSsl::KeyAlgorithm::Rsa)); // peer verify config.setPeerVerifyMode(QSslSocket::VerifyPeer); // if any of them is null if (config.isNull() || config.localCertificate().isNull() || config.privateKey().isNull()) { throw std::runtime_error("Can't Create QSslConfiguration"); } const auto processSslErrors = [=] (QSslSocket * sock, const QList<QSslError> & errors){ // create a dialog auto dialog = QMessageBox(QMessageBox::Critical, "SSL Error", "Accept ?", QMessageBox::Yes | QMessageBox::Cancel); // show the dialog dialog.exec(); // if user accepted if (dialog.result() == QMessageBox::Yes) { sock->ignoreSslErrors(); } }; // create the server auto server = new QSslServer(); // set the ssl errors handler QObject::connect(server, &QSslServer::sslErrors, processSslErrors); // set the ssl configuration server->setSslConfiguration(config); // listen to the port server->listen(QHostAddress::Any, 7000); // exec return app.exec(); }

    In Client Side:

    openssl s_client -connect 127.0.0.1:7000

    You can see the client disconnected while the dialog is in open

  • 0 Votes
    2 Posts
    316 Views
    JonBJ

    @Vivek_A
    This question seems to have nothing at all to do with Qt, does it? So shouldn't you ask at a mongodb forum?