Keresés

Új hozzászólás Aktív témák

  • CPT.Pirk

    Jómunkásember

    Sima C-s és Pascalos fejjel van egy kérdésem.

    QT creatorban a MainWindow osztálynak van egy ilyen része:

    public:
    explicit MainWindow(QWidget *parent = 0);
    QPoint GetLabel2WidthHeight();
    QPoint GetPushButtonDimensions();

    amikkel szeretném máshonnan lekérdezni a mainformon lévő két widget xy paraméterét.

    Egy másik CPP fájlból szeretném az előző paramétereket átemelni, és ott dolgozni velük:

    ...
    int Border_x, Border_y, PB_Width, PB_Heigt;

    mousemovedbutton::mousemovedbutton(QWidget *parent) : QPushButton(parent)
    {
    MainWindow * mw = new MainWindow();

    QPoint Dimensions;
    Dimensions = mw->GetLabel2WidthHeight();
    Border_x = Dimensions.x();
    Border_y = Dimensions.y();

    Dimensions = mw->GetPushButtonDimensions();
    PB_Width = Dimensions.x();
    PB_Heigt = Dimensions.y();
    qDebug() << "GetDimensions " << QString("bx: %1 by: %2 | w: %3 h: %4").arg(Border_x).arg(Border_y).arg(PB_Width).arg(PB_Heigt);
    }
    ...

    Ez így nem ad hibát fordításkor, de a program meghal, valszeg mert nem kellene még egy példányt létrehoznom a MainWIndow-ból...

    C-ben set és get függvényeket írogattam ilyesmire, úgy simán ment a dolgok átadása fájlok között. Pascalban sem volt bonyolultabb. Itt c++ alatt egyáltalán megoldható ez amit szeretnék, vagy ezt is valahogy slotokkal és szignálokkal kellene csinálni?

    Röviden összefoglalva egy cimkéből csinált keretben van egy gomb, amit az egérmutató közeledésére szeretnék arrébb mozgatni, de ehhez kellene a keret és a gomb xy paraméteri. Az egérmutató mozgására adott szignál meg slotos részek már megvannak.

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

  • CPT.Pirk

    Jómunkásember

    válasz dabadab #3855 üzenetére

    QRect, oké. :)

    Arra gondoltam, hogy class-on kívüli változókat töltök fel a MainWindow létrejövetelénél és azokat simán átadom másik fájlnak, de rá kellett jönnöm, hogy a gomb előbb jön létre, mint a MainWindow amin rajta van így ez nem járható.

    Végül aztán a slotokkal sikerült megcsinálni. Betettem a MainWindowhoz egy slotot a két QRect elküldésére, a constructorban megcsinálom a qrectec feltöltését és a connectet a vevő oldallal, majd emittálok.

    ...
    connect(this, &MainWindow::SendDimensions, ui->movedPushButton, &mousemovedbutton::GetDimensions);

    LabelDimensions.setX(ui->label_2->width());
    LabelDimensions.setY(ui->label_2->height());
    PushBtnDimensions.setX(ui->movedPushButton->width());
    PushBtnDimensions.setY(ui->movedPushButton->height());
    emit SendDimensions(LabelDimensions, PushBtnDimensions);

    Így most faszán odaérnek a paraméterek a vevő oldalra és tudok velük dolgozni. ;]

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

  • CPT.Pirk

    Jómunkásember

    Sziasztok,

    Arduino alatt működő, stewart platform koordináta transzformáló kód részletet szeretnék átvinni az őt irányító Raspberry-re, mert egyszerűen nem végez időben a gyenge kis Arduino a számításokkal.

    Az Rpi-n fut a szerkezet vezérlő programja, ahová ebben a formában beépítettem: https://pastebin.com/PHkg33Xh

    Nincs fordítási hibám, de mikor ehhez a sorhoz ér a kód futása, akkor elszáll a program hibaüzi nélkül:
    platEnd[motor].x = rotationMatrix[0] * (platStart[motor].x - poi.x) + rotationMatrix[1] * (platStart[motor].y - poi.y) + rotationMatrix[2] * (platStart[motor].z - poi.z) + x + (platStart[motor].x - poi.x);
    Akkor is, ha csak ennyi van ott: platEnd[motor].x = rotationMatrix[0];
    A baloldali rész az int16, az egyenlőség jobb oldalán float van.

    Próbáltam castolni igy, de elhal így is: platEnd[motor].x = static_cast<int16_t>rotationMatrix[0];
    Viszont ha kézzel odaírok egy platEnd[motor].x = 12,3; -at, akkor azzal semmi baja.

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

  • CPT.Pirk

    Jómunkásember

    válasz dabadab #4423 üzenetére

    Hű, szerintem .-al írtam, de ez most jó kérdés.

    Egyébként a google-ös találatok miszerint static_cast<int16_t> -al kellene castolni float-ból int-be, az stimmel? Ezt a floor() dolgot megpróbálom holnap, csak közben lebetegedtem kicsit, a cucc meg bent van így távgyógyítás lesz... :)

    [ Szerkesztve ]

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

Új hozzászólás Aktív témák