Ú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 egyplatEnd[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
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- EDIFIER R1700BTS hangfal pár makulátlan, új állapotban, 2 év hivatalos garanciával, alkalmi áron
- LG OLED55B23LA 2 Év GYÁRI GARANCIA
- Apple iPhone XR 128GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC , i7 12700KF , RTX 3080 Ti , 64GB DDR5 , 960GB NVME , 1TB HDD
- Intel PC , i5 8500 , 1660 6GB , 32GB DDR4 , 512GB NVME , 500GB HDD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen