Skip to content

German

A forum for those speaking German
718 Topics 3.6k Posts
  • 0 Votes
    1 Posts
    241 Views
    No one has replied
  • Qt 5.12.6 native auf raspberry pi 3 compilieren?

    Unsolved
    2
    0 Votes
    2 Posts
    268 Views
    K

    @Chucktest

    Hallo und willkommen beim devnet Forum

    Eventuell wäre es sinnvoll die eigentlichen Probleme direkt zu beschreiben. Dann kann dir auch jemand einen Rat geben.

  • PushButtoin in ein 2D Array?

    Unsolved
    2
    0 Votes
    2 Posts
    258 Views
    jsulmJ

    @Martin-H said in PushButtoin in ein 2D Array?:

    Gridlayout erzeugt, welches ein 3x3

    dann solltest du auch in der Lage sein QPushButton* in einen 2D Vector zu packen, oder?
    Wegen Slot: benutze Lambda-Functions, dann kannst du auch x/y für jeden Button mit nehmen.

  • 0 Votes
    3 Posts
    423 Views
    Christian EhrlicherC

    Hier ist die korrekte Anleitung: https://doc-snapshots.qt.io/qt5-5.14/sql-driver.html

  • Qtwidget: Text ausgeben

    Solved
    7
    0 Votes
    7 Posts
    2k Views
    K-StrK

    @jsulm ,
    danke für Deinen Tipp.
    Letztendlich habe ich es mit QTimer hingekriegt.
    Super Hilfe!!!

  • Lauffähiges C++ - Programm auf Widget einbetten

    Solved
    6
    0 Votes
    6 Posts
    483 Views
    L

    So. Nach langem Suchen bin ich nun soweit, dass er mir das Programm "extApp" startet.
    Sowohl in einem eigenene Fenster, als auch auf dem StackedWidget, das auf dem MainWindow liegt.

    Ich möchte kein eigenes Fenster von "extApp". Das Programm zeigt mir zwar die Felder und das Layout an (links), ich kann aber die App aber nur
    im 2. Fenster bedienen.
    Hat jemand einen Plan?

    Links MainWindow mit stackedWidget Rechts eigener Prozess von extApp
    QProcess.png

    void MainWindow::on_pushButton_3_clicked()
    {
    QProcess *p = new QProcess();
    p->start("extApp");

    char buff[500]; buff[0]=0; p->waitForStarted(); p->waitForReadyRead(); p->read(buff,100); unsigned long long id1=atoll(buff); auto *window = QWindow::fromWinId((WId)id1); Q_ASSERT(window); QWidget *widget = QWidget::createWindowContainer(window); ui->stackedWidget->setCurrentIndex(1); ui->stackedWidget->setCurrentWidget(widget);

    }

    Mir würde auch schon genügen, wenn ich eine externe App am akt. MainWindow oder Widget
    andocken könnte.

  • Qt Maintenance Tool läuft auf Fehler

    Unsolved
    1
    0 Votes
    1 Posts
    197 Views
    No one has replied
  • Qt Virtual Keyboard Darstellungsproblem

    Unsolved
    1
    0 Votes
    1 Posts
    325 Views
    No one has replied
  • Linux App in QtCreator einbinden

    Solved
    5
    0 Votes
    5 Posts
    453 Views
    L

    Danke für die Info. Hab ich mir mal angesehen und entschieden, dass ich die QT-Tastatur nehme.
    Ist ja alles drin was man braucht :-)

  • In Mainwindow alle Dialogs Schließen

    Unsolved
    9
    -1 Votes
    9 Posts
    1k Views
    A

    Hi,
    Die Dialogs haben bestimmt einen bzw. mehrere parents.
    z.B.

    Wenn getriggert wird, über alle children laufen

    QObjectList localChildren = MyMainWindow->children();

    close aufrufen
    myObj->close();

    delete aufrufen

    qDeleteAll(localChiildren);

  • Qt Widget läuft nicht auf einem RPI3 mit LCD-Display

    Unsolved
    2
    0 Votes
    2 Posts
    438 Views
    K-StrK

    Hallo,
    hier noch die Fehlermeldungen die ich beim Starten eines Widgets bekomme sowie die Kommandos für das Einrichten des Raspberry und Linux Hostes::

    Zunächst kommt mal diese Warnung:
    qglobal.h:45:12: error: 'type_traits' file not found
    mainwindow.cpp:1:1: note: in file included from /home/kurt/Widget/mainwindow.cpp:1:

    Beim Starten des Widgets bekomme ich diesen Fehler:

    Unable to query physical screen size, defaulting to 100 dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters). Attribute Qt::AA_ShareOpenGLContexts must be set before QCoreApplication is created.

    Was heist das in der letzten Zeile? Muß ich da was konfigurieren in dem Module "main.cpp"?
    Und nun wird zwar das Widget angezeigt aber die Eingabe über den Touch-Screen wird nicht erkannt.

    Hier der update auf dem Raspberry:

    echo -e ${Green}"first make rpi-update"${Reset} sudo rpi-update sudo reboot sudo apt-get update sudo apt-get build-dep qt4-x11 sudo apt-get build-dep libqt5gui5 sudo apt-get inst~all libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 sudo apt-get install ttf-dejavu gdbserver echo -e ${Green}"Prepare target folder"${Reset} sudo mkdir /usr/local/qt5pi sudo chown pi:pi /usr/local/qt5pi

    und auf dem Linux Host:

    ssh-keygen -t rsa -C pi@192.168.180.42 -N "" -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub | ssh -o StrictHostKeyChecking=no pi@192.168.180.42 "mkdir -p .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys" echo -e ${Green}"Install packages"${Reset} sudo apt-get install git python build-essential --yes echo -e ${Green}"Create working folder and set a toolchain"${Reset} mkdir ~/raspi cd ~/raspi git clone https://github.com/raspberrypi/tools echo -e ${Green}"Create and configure a sysroot"${Reset} mkdir sysroot sysroot/usr sysroot/opt rsync -avz pi@192.168.180.42:/lib sysroot rsync -avz pi@192.168.180.42:/usr/include sysroot/usr rsync -avz pi@192.168.180.42:/usr/lib sysroot/usr rsync -avz pi@192.168.180.42:/opt/vc sysroot/opt echo -e ${Green}"adjust our symbolic links in sysroot to be relative"${Reset} wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py chmod +x sysroot-relativelinks.py ./sysroot-relativelinks.py sysroot echo -e ${Green}"Download Qt"${Reset} wget http://download.qt.io/official_releases/qt/5.12/5.12.5/single/qt-everywhere-src-5.12.5.tar.xz tar xvf qt-everywhere-src-5.12.5.tar.xz cd qt-everywhere-src-5.12.5 echo -e ${Green}"Configure Qt for cross compilation"${Reset} ./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm echo -e ${Green}"run 'make -j4'"${Reset} make -j4 echo -e ${Green}"run 'make install'"${Reset} make install echo -e ${Green}"eploye to your Raspberry Pi using the rsync command"${Reset} cd ~/raspi rsync -avz qt5pi pi@192.168.180.42:/usr/local

    Vielleicht hilft das bei der Analyse des Problems.
    Vielen Dank!

  • Eigene CMainwindow - Klasse in QT-Creator einbinden

    Solved
    2
    0 Votes
    2 Posts
    384 Views
    J.HilkJ

    @Linex

    Bei der Class Information kann ich die Base class auswählen.

    meines Wissens nach nicht, die Auswahl von dem Wizard ist begrenzt. Vielleicht ginge es, wenn du deine CMainWindow als plugin exportierst oder so.

    Vielleicht weiß wer anderes mehr. Mein QtCreator Wissen ist begrenzt 😆

    Ansonsten, einfach nach erstellen QMainWindow mit CMainWindow als basis Klasse austauschen, sind 2 Stellen in den 2 Dateien

  • Anfänger Fragen zwecks Version

    Unsolved
    1
    0 Votes
    1 Posts
    256 Views
    No one has replied
  • QSqlRelationalTablemodel - setFilter

    Unsolved
    2
    0 Votes
    2 Posts
    394 Views
    JonBJ

    @moppi83
    Wenn ich es gut verstehen habe:

    https://doc.qt.io/qt-5/qsqlrelationaltablemodel.html#details

    The reference table name is aliased. The alias is the word "relTblAl" and the relationed column index joined by an underscore (e.g. relTblAl_2). The alias can be used to filter the table (For example, setFilter("relTblAl_2='Oslo' OR relTblAl_3='USA'")).

  • 0 Votes
    2 Posts
    372 Views
    K

    @BlackyDragon

    Hallo und willkommen im Devnet-Forum

    Soweit ich weiss, bleiben dir nur unabhängige Seiten für deutsche Qt-Dokumentationen https://lmgtfy.com/?q=qt-beschreibung+in+deutsch oder Google-Translate

    PS: Aussage stimmt nicht ganz. Es gibt noch deustche Seiten bei https://wiki.qt.io/Main/de

  • main Funktion mit Standard C++ zu eine Sheduling umbauen

    Unsolved
    3
    0 Votes
    3 Posts
    488 Views
    G

    @jsulm said in main Funktion mit Standard C++ zu eine Sheduling umbauen:

    Simplest but not very elegant solution would be a loop with sleep() inside. Do you use any other libraries/frameworks?
    yes Rhapsody
    "Diese wird mit dem Brocker kommuniziert" - how?
    the Brocker will simulate the Hardware

  • 0 Votes
    3 Posts
    344 Views
    R

    Vielen Dank für den Tipp,

    das brachte mich auf die richtige Spur.

    Der Pfad in QLibraryInfo::location(QLibraryInfo::TranslationsPath) war auf dem zweiten System nicht verfügbar. Ich habe den Pfad in der qt.conf entsprechend angepasst, siehe: https://doc.qt.io/qt-5/qt-conf.html

    Vielen Dank Christian.

  • 0 Votes
    2 Posts
    229 Views
    ?

    Ich habe jetzt nach vielen Herumprobieren die Lösung gefunden.

    Die Reihenfolge ist anscheinend wichtig:

    Funktionierendes Schema:

    QLayout anlegen/erstellen (new) Layout einem Widget zuweisen Mit widget->layout() die entsprechenden Parameter setzen

    Nicht funktionierendes Schema:

    QLayout anlegen/erstellen (new) Parameter setzen Layout einem Widget zuweisen

    Und außerdem haben die Funktionen setMargin() und setSpacing() gefehlt.

    Anbei der funktionierende Codeabschnitt void WindowMDI::createLayout(void):

    void WindowMDI::createLayout(void) { QLayout *oldLayout; QVBoxLayout *ptrLayout; m_menubar = nullptr; m_statusbar = nullptr; oldLayout = layout(); if (oldLayout != nullptr) delete oldLayout; m_layoutMain = new QVBoxLayout(this); m_layoutCenter = new QHBoxLayout(); m_layoutCenter->setContentsMargins(0, 0, 0, 0); m_layoutCenter->setSpacing(0); m_layoutCenter->setMargin(0); m_widgetLeft = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetLeft); m_widgetLeft->setLayout(ptrLayout); m_widgetLeft->setContentsMargins(0, 0, 0, 0); m_widgetLeft->layout()->setContentsMargins(0, 0, 0, 0); m_widgetLeft->layout()->setSpacing(0); m_widgetLeft->layout()->setMargin(0); m_widgetCenter = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetCenter); m_widgetCenter->setLayout(ptrLayout); m_widgetCenter->setContentsMargins(0, 0, 0, 0); m_widgetCenter->layout()->setContentsMargins(0, 0, 0, 0); m_widgetCenter->layout()->setSpacing(0); m_widgetCenter->layout()->setMargin(0); m_widgetRight = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetRight); m_widgetRight->setLayout(ptrLayout); m_widgetRight->setContentsMargins(0, 0, 0, 0); m_widgetRight->layout()->setContentsMargins(0, 0, 0, 0); m_widgetRight->layout()->setSpacing(0); m_widgetRight->layout()->setMargin(0); m_layoutCenter->addWidget(m_widgetLeft); m_layoutCenter->addWidget(m_widgetCenter); m_layoutCenter->addWidget(m_widgetRight); m_widgetMenubar = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetMenubar); m_widgetMenubar->setLayout(ptrLayout); m_widgetMenubar->setContentsMargins(0, 0, 0, 0); m_widgetMenubar->layout()->setContentsMargins(0, 0, 0, 0); m_widgetMenubar->layout()->setSpacing(0); m_widgetMenubar->layout()->setMargin(0); m_widgetToolbar = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetToolbar); m_widgetToolbar->setLayout(ptrLayout); m_widgetToolbar->setContentsMargins(0, 0, 0, 0); m_widgetToolbar->layout()->setContentsMargins(0, 0, 0, 0); m_widgetToolbar->layout()->setSpacing(0); m_widgetToolbar->layout()->setMargin(0); m_widgetCommand = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetCommand); m_widgetCommand->setLayout(ptrLayout); m_widgetCommand->setContentsMargins(0, 0, 0, 0); m_widgetCommand->layout()->setContentsMargins(0, 0, 0, 0); m_widgetCommand->layout()->setSpacing(0); m_widgetCommand->layout()->setMargin(0); m_widgetStatusbar = new QWidget(this); ptrLayout = new QVBoxLayout(m_widgetStatusbar); m_widgetStatusbar->setLayout(ptrLayout); m_widgetStatusbar->setContentsMargins(0, 0, 0, 0); m_widgetStatusbar->layout()->setContentsMargins(0, 0, 0, 0); m_widgetStatusbar->layout()->setSpacing(0); m_widgetStatusbar->layout()->setMargin(0); m_layoutMain->addWidget(m_widgetMenubar); m_layoutMain->addWidget(m_widgetToolbar); m_layoutMain->addLayout(m_layoutCenter); m_layoutMain->addWidget(m_widgetCommand); m_layoutMain->addWidget(m_widgetStatusbar); setLayout(m_layoutMain); setContentsMargins(0, 0, 0, 0);; layout()->setContentsMargins(0, 0, 0, 0); layout()->setSpacing(0); layout()->setMargin(0); }
  • TableWidget clicked() und doubleClicked()

    Solved
    9
    0 Votes
    9 Posts
    933 Views
    GerhardG

    Hallo,
    hier nochmals kurz eine Darstellung des Sachverhaltes:
    Tatsächlich wird das doubleClicked Signal in eine Abfolge von clicked() - doubleClicked() - clicked() Signal aufglöst, sofern innerhalb der entsprechenden Slots nichts am Zustand des TableWidgets geändert wird.
    Wird jedoch wie in meinem Fall innerhalb der Abarbeitung des doubleClicked() das entsprechende TableWidget disabled, so entfällt das letzte clicked() Signal.

  • Model / View - data-Funktion "Role"

    Unsolved
    4
    0 Votes
    4 Posts
    478 Views
    raven-worxR

    @aando
    das ist der "Marker" für die erste Custom Role. Du kannst jetzt einen beliebigen Wert addieren z.B.
    Er darf einfach nicht niedriger sein als dieser Wert.
    Custom Roles funktionieren natürlich auch nur mit Custom Models ;)