From 0c7f56e8818683afd3c02dcb423fb8ad4ad72414 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 02:21:05 -0400 Subject: [PATCH] imageviewer updates - new zoom icons - resetview option - properly track pushbutton checked state - add preferences options for selecting background and box color --- tools/lammps-gui/chartviewer.cpp | 2 +- tools/lammps-gui/gtk-zoom-fit.png | Bin 1405 -> 5153 bytes tools/lammps-gui/gtk-zoom-in.png | Bin 1224 -> 5006 bytes tools/lammps-gui/gtk-zoom-out.png | Bin 1172 -> 4829 bytes tools/lammps-gui/imageviewer.cpp | 58 +++++++++++++++++++++-------- tools/lammps-gui/imageviewer.h | 1 + tools/lammps-gui/lammpswrapper.cpp | 12 +++--- tools/lammps-gui/preferences.cpp | 38 +++++++++++++++++-- 8 files changed, 85 insertions(+), 26 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 0b269a80ec..d9fedd9129 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -53,7 +53,7 @@ int ChartWindow::get_step() const { if (charts.size() > 0) { auto *v = charts[0]; - return (int)v->get_step(v->get_count()-1); + return (int)v->get_step(v->get_count() - 1); } else { return -1; } diff --git a/tools/lammps-gui/gtk-zoom-fit.png b/tools/lammps-gui/gtk-zoom-fit.png index 35994e8bc76a0c7032bb4432a2986729c1f69c19..9132294eac62905f27d5ed0fe4c48228fa8c306e 100644 GIT binary patch literal 5153 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 literal 1405 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 diff --git a/tools/lammps-gui/gtk-zoom-out.png b/tools/lammps-gui/gtk-zoom-out.png index 72e6eb43c6884e051ef8858bf5e0f08189458983..42acdd993dbaf40352db43d488801ea9294bf7d3 100644 GIT binary patch literal 4829 zcmai&XHZjJ+qO4NsuB>8PN)I~Na*!O5T&<(^p4a3p@iOhQ6N+m5mZ1_dI^F^0F~a0 z3BC6s2vS7K8=w1o=9~A|yJyxqXV#p@KCk^}?Q5-M13mTYRIF4009@D9P=gZ``gc%V zBh046zY_^^%|TmTji7|*_r2ywf>3&EnEL^M=IGx+^zMGj>EFcwZxt7U{)Yz!e>^b- z0MNdsnu@XOT#E$)ZKdvisTVlkH50tkzcaXVuk5=P?rUyvx7e!#Q3nUMNoIIlTlxy} zgW#n>4q8j&9m78Fdt-h+W0ewN18zzK(pJH9G?%RG>o#fWT8O1;rjxdXTi~%$Am_>C z>}_Rdbqnfg3!+6_fs#^qXviRbecMlOp5=>JkkZ+=dvq#uD(958y?jD2%jJXML*F`V&}JIVLf6r0Yoy0)4K|(bU7sc5JPcXQ-;4bp3NFw%-a}^41yC?5&j_hLhu6}Bioc-9+sIU-ZXtOIe zPvJ{L7Yo(n0HB0HaVU20w>LYv2a6#)H_g|8(wqNe6>qjmOy2`=Phh7D)?AmXBta`R zd#b^r2Yj=;vV&df!rzrWq`OLEz;`phnOR%6j~`&IakgWiL%QnrXYLx*Bc@{t{eR9v67X(NIG&hRB}P{y#u{KB70 zTN$>SAEjO_N92}1D^yPRTOT|;cTliM7u-Os+S-qMdV3FwH1oprw1S^u8Up7pGHlt~NakC}RX}Lmne)6@SU`yT z87?GTrvhW@eK4+>FZYoFBkx}GxTeDj7lJO}rq=;rZT&QTb_kY!rbiO1yb#lltyAOg zX?s&Jx}E&l;vN@QntNxYl`N?nc-BK2jB8@S4hl>fA~3I?T6DdbaKDXVeHG zyh6*->UX`*)x0T7BjKSZDQl;VwI0Y8Xe75@=E@LRvXSXBQE+fqAm`^>{fbMngN3?! zI^iA;VP9S%Uv^Qe+lb#507XO_Upzr)77zh8w$91U@hlK8@je3e zS#GhaqH1Z?Q5jR!a1h@x6Fzmv*l&nYi=K`SdaB&`Eb*6p1Cs}&rn!I_x2;oW53xkQWQ@Wy**GiXsQYN%*YWwKc$y&k?l*?1Rl{d(t`SAm(# z(xVcyUk2=Kh`XBRGzz=$%0sT1i`TUEd#!s4rt3sJnZTTBg~_~;aL&d~6W)969RAts z_Rxn{1*BMmv}{!^*sGL@ePW6y?LROy4K%g6lV;A2<&1FjFp~uZqC6f$BW_aMFpA{g zoRnCdDA;ybqF%gQKj|C+_gpS}^|s zQ-$&zWmt(-N!)gKpBkl$QD{-2m3ro~#-glNqgG}eY|w{6h@YH?|ELi=x7FQYg2+&5 zo7gb>?w>zhj!PAb*rc{Ri5j8rpSVTZL84;tZD~|77a!tND3Ghv+E!T>#~W{;h2|yG z)O3jDv;*vDct8@@Plt4J%_;6^pyTa8bQv|Edz=~f^$M)=xq1lvodY>xyFgs%7haOJq$r8#o3pV;QbASb4ugT7yQV zf@4aHr)&jDZ3!Ke6rDSswfRq(Kv5)wlA{)xk^%EbT@JC^8s*%=MIUp zXZiQe+M0fV1@8|ha|3ut^iOnOk8K|3jYUDO@#|}13X>Fp5hfx7LoKQ0PogDmF@iny z8ATb(vS?K_Ix|z!U$4OY86;@*D4W!E8A;*L#_xPBf#o;cm16@Uvr#Jj{5fmkp_NR} zb-#S0IgHoGTP0Iwywq5IcrOc&;fy!{M1$UlmZ&jwbxR>~RRlV~+CoA}EN@osoRG9) z$GEB(C&V{&Q{FE&OaM}{^>lPhc;1<-)+(MsnyUNeVOy$I%B^{Pp<9&4G6ObCrg@4gxMH>sm1kZl$mYT-CvlI02*fDuF~tfXosq5OgDNPGUsyH1gUvCUwJS?_x*8WcDhL{u`_lwmY$QHO{)RLb@*IVc3l>=kfv}< zHnA#{5?0I`ThX!<>~s^zV)b-Dh!kggXM=*veSTRfE4Jnd^cte`706z!x-f;xf2V=c zibJBm38+J3McUXHg)E(&sRfAYO?b5=NQA7R4CPWFCJM#ZVd=#T^qqXe7G0gsP<=qX zv|+(IBDkR4@J5*F2f?%;tVpH`=$4vlUPs!G@QWVP)b(DXUguCH76^VK8lmVBdaBhn|7>4$iO_+f?O3OpB{|yV0;0XXB>SMk=DvY9<2Lri zN;D(x|)Er2p1H z$NBzYN+p{9;$6C=_WFV19+D*rCZId^tHkSL)|0f<-#NaT;}<#ZDyxM3{e29G3C^|} zm_rYOtI~Xs5?}>tz;9Dg{Y?G1+Ikv$k#bCR=NAhS1Wh+HJ+zw1in_kFP9-(OU(Fmr zmtddyc2oPox@qxnhYqAf(!7AnEphQPjx|S%Oroe3rjUt)P)qCJ#B0dftD~G)gUFWN zKq;Y=3Fs&g2%edp8OI*Cq(UcKZn6qC(1@OO4E8)xdu{mM7<9y2{t-{;4HQ&+CqrN- z$?1{wxT%}=%veyvy=*Nfois*m8J*5LvM%9)Z`Zyh^su6(Kpx$u3gvnm>6=$O1*FQIK^O1o`wKx^_rV54zb;h*{Oxq56#iw?UsXL$DEW8}IweGpp z27tS0tF+~f;V)m#KY^1wC*B49k?!YY-qWL}G^1z$bGq7#kXrI6m>oqgstP4tUoK%! z0^R#c{@R>^NQET4uOaB*?aRv@wIZQWzV?}!rlW{)<>ELq?3<&fB+&9y>9x?lJAFfy zkScEs{A<4&=9i^H2y*&i>Ia>tr#I-Mn1|zw*_q`e!^XC38GL$z=!tc{g>JbW;go() z9}ntehqXpE9s12!cqk$2f7?{7JFH&gG)l0@;q}b&` z9=SO={YECACKjHJwXT#A`eX9F&#{M!FZyaxPoC3CzE~Efpn3yYc7J$ujv4n1L~-+T zzg_{wO#tGg+}@kX17IN!#R>r8=u%>Ou`qYU7U{UxEv4YnP$rx9b7_QkWTwf_Rtk5% z-IGPZg_9!o zG`gis8Bwp{)b*nN*yZH}Z?NCVTIbZScElI9`IcsB1qr2!T1c1vjVsb2rK=f4mwx`~ z+DMVQlNJsrgn0d2grTwmH_11tI6!ahxJ|KPE6DH?gD)dcxK zX7pSb)z#HvLl>nt(Ic6S;bQ?qZ$fBIrdg>ScvEA=Q1P@ZHmxo)Ecb%p5=2ilkhM#d#Em z)HC^H1CJp#A-`RN4#tzY2z6Xo7pz|$cROB%V;BB>#JTe}$ALCbpEgd;n7NQ|Mwr>C zrx%Y}Y>?)N@EG%RnwOP9t`RH4ML|n7x2r!jFtmD~#yhH}lzxFKwlp@n<}%&72v9&R z%lh~id}XF~grK}YU6fPyN%1&ho8VPr)Xr%Q^=hc-9zlT3=tEz`&t3ob{-Zd+7z z3|S)f?AMB|M3wY{VcYT3TauhfkPywr2EdDkNYI&mM)!x>tOp-@n4QP>h=l?=8lsu@Vm2y`_}c- z+$kMIN#S@K(x1KOVcWg0f ziRhOQe6#y^3yhWUo9SI}+D+FAn3PofgE~W7wrim3mK2lulU676qlb{s> z(qIW^vxDr^lY_PAc_A(Tz(sG3Y+4b+>Kw17m31<$t%v&Lhh4c7E!5(XsKU9Gi+cl& zsIW_xEfzr*XTWhj5Q-L?iiaY`(pW+>aq66>S>&wBBGalM*9C8 zO)(y}IdvX5UGvQCyUxKX?ZF0|iTB801_bOK>o@&FUAWa`1`cMi>ks8;E0rS7zimpm z42J#gUgTBQ8QWR!BMI```plR*=l)}HEkHV%c%cz%n_n>bb2=v@V_slCq;&SOu&K_4 z*2Nr0hPK*GS4v=?qbjKkm>U?;S%k;=7H1dO3TC4UrX_U~ZL}jf0i;u#m}A<2p*wRx zqFq8&;^Su|-B+}4-g4-5itX|fE<*TG_svj_zE1WiCy_^l2@r=umugyuf2J=9ABwC5)2)9^{=SY*fV!T(?tQSPBhm|O?CRv{)c#w*jbH))e~axy jxXyoTxA#Sfx_BWy|MNC6@s*5Vf)~)ducub2Y8UfAa#!tD literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s%*9TgAsieWw;%dH0CG7CJR*yM z%CCbkqm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vqAVndW zB{``KQTh3~dl*Btfud?4QODAfjQk=7uf*)qB!%FT)XcopA{_;v#DaVU=fs@E+{C<; zqSQ>0kdMn57#L3k_=LDtRDkTo5BBfh4^*)6$VU9iFl8kqB!Gglva*;`aFJd6wx_43 z?B2IEEi>83*ucO@Z|{L!`ws3-&rI8UU}t(pYH3BuzJnll$j-u3Pi+)r-WW_{8M+vWnu``l|Yd znwGZ4mbRwOp7!qEj{b=~lcw}fo;G2|?5Q*7Oq;u4)}p2Jm#ReC5*h>(_4GzIpr3tvh#b-@A9`-u=4|AKriX=>C%@ zkDfez{OtMD=g*%3t$y|D(?(|zkdDp?c4Y7K=l3lkMBQzeE<3L$IqWXfBpLT`}eQkzkmPv z14MuR{{8#!-@pI=|Nq(W?-npjy-I@of*BZ@m|0la*f}`4xOsSa`2_@pghfQf#3dwU zEamTas2HRYj0*pk=FBbZ=P-b!64tEAXJkexaO^nuFjSC>_pY5&aGyP6gtH0 z6jFSX%AUn>`)+!7M=<+q$>DkV=VtD<=Kk|KzoV=BnoH?iFSea8)5NU|wp#5rR(v?^ z=EcvUW>L33PCnbp{Ms^PX=!|QK*QOewTg>7HWWtJ^E6JiJ-vwg?CaeNbtM_M{!%cL zjQ1C0^4;-5M|<^h#e@fsFPnQcak&3g;$k?r*dcMX;Q^ubAsqT)MGnq|``xrStsBlW z{h!7hk;FN#%=@47`y|djMzg03hj}da3Ozo3{D&fUUuY6r&5Q^8Srhu}=NzzPj^I9i z%3<9;cKrjwA(f_#Y=N1aIgc6wwQJc|OwEzm5aqO6nB7XB>q7SVBYG~sj5L^8zO0{K z^=qzi?`J(mqmm|uO~setObjectName("group"); int ngroup = lammps->id_count("group"); @@ -93,6 +94,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(rotright); menuLayout->addWidget(rotup); menuLayout->addWidget(rotdown); + menuLayout->addWidget(reset); menuLayout->addWidget(new QLabel(" Group: ")); menuLayout->addWidget(combo); @@ -106,26 +108,20 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge connect(rotright, &QPushButton::released, this, &ImageViewer::do_rot_right); connect(rotup, &QPushButton::released, this, &ImageViewer::do_rot_up); connect(rotdown, &QPushButton::released, this, &ImageViewer::do_rot_down); + connect(reset, &QPushButton::released, this, &ImageViewer::reset_view); connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(change_group(int))); mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); - setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).completeBaseName()); - - QSettings settings; - settings.beginGroup("snapshot"); - zoom = settings.value("zoom", 1.0).toDouble(); - hrot = settings.value("hrot", 60).toInt(); - vrot = settings.value("vrot", 30).toInt(); - showbox = settings.value("box", true).toBool(); - dobox->setChecked(showbox); - showaxes = settings.value("axes", false).toBool(); - doaxes->setChecked(showaxes); - settings.endGroup(); - + setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).fileName()); createActions(); - createImage(); + + reset_view(); + dobox->setChecked(showbox); + doaxes->setChecked(showaxes); + dossao->setChecked(usessao); + doanti->setChecked(antialias); scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); @@ -137,6 +133,37 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge setLayout(mainLayout); } +void ImageViewer::reset_view() +{ + QSettings settings; + settings.beginGroup("snapshot"); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); + showbox = settings.value("box", true).toBool(); + showaxes = settings.value("axes", false).toBool(); + usessao = settings.value("ssao", false).toBool(); + antialias = settings.value("antialias", false).toBool(); + settings.endGroup(); + + // reset state of checkable push buttons (only after main layout is set up) + auto *lo = layout(); + if (lo) { + lo = lo->itemAt(0)->layout(); + auto *button = qobject_cast(lo->itemAt(1)->widget()); + button->setChecked(usessao); + button = qobject_cast(lo->itemAt(2)->widget()); + button->setChecked(antialias); + button = qobject_cast(lo->itemAt(3)->widget()); + button->setChecked(showbox); + button = qobject_cast(lo->itemAt(4)->widget()); + button->setChecked(showaxes); + auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); + cb->setCurrentText("all"); + } + createImage(); +} + void ImageViewer::toggle_ssao() { QPushButton *button = qobject_cast(sender()); @@ -251,7 +278,8 @@ void ImageViewer::createImage() else dumpcmd += QString(" axes no 0.0 0.0"); - dumpcmd += " modify boxcolor silver"; + dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString(); + dumpcmd += " backcolor " + settings.value("background", "black").toString(); settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 1a4327561b..b81e5b0d59 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,6 +45,7 @@ private slots: void normalSize(); void fitToWindow(); + void reset_view(); void toggle_ssao(); void toggle_anti(); void toggle_box(); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 63d95d71b2..8bc6173752 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -39,7 +39,7 @@ int LammpsWrapper::extract_setting(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->extract_setting(lammps_handle, keyword); #else - val = lammps_extract_setting(lammps_handle, keyword); + val = lammps_extract_setting(lammps_handle, keyword); #endif } return val; @@ -52,7 +52,7 @@ int LammpsWrapper::id_count(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->id_count(lammps_handle, keyword); #else - val = lammps_id_count(lammps_handle, keyword); + val = lammps_id_count(lammps_handle, keyword); #endif } return val; @@ -65,7 +65,7 @@ int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int len) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, len); #else - val = lammps_id_name(lammps_handle, keyword, idx, buf, len); + val = lammps_id_name(lammps_handle, keyword, idx, buf, len); #endif } return val; @@ -78,7 +78,7 @@ double LammpsWrapper::get_thermo(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->get_thermo(lammps_handle, keyword); #else - val = lammps_get_thermo(lammps_handle, keyword); + val = lammps_get_thermo(lammps_handle, keyword); #endif } return val; @@ -91,7 +91,7 @@ void *LammpsWrapper::last_thermo(const char *keyword, int index) #if defined(LAMMPS_GUI_USE_PLUGIN) ptr = ((liblammpsplugin_t *)plugin_handle)->last_thermo(lammps_handle, keyword, index); #else - ptr = lammps_last_thermo(lammps_handle, keyword, index); + ptr = lammps_last_thermo(lammps_handle, keyword, index); #endif } return ptr; @@ -104,7 +104,7 @@ bool LammpsWrapper::is_running() #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->is_running(lammps_handle); #else - val = lammps_is_running(lammps_handle); + val = lammps_is_running(lammps_handle); #endif } return val != 0; diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index f003545764..45d7414140 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -120,6 +120,10 @@ void Preferences::accept() if (box) settings->setValue("box", box->isChecked()); box = tabWidget->findChild("axes"); if (box) settings->setValue("axes", box->isChecked()); + QComboBox *combo = tabWidget->findChild("background"); + if (combo) settings->setValue("background", combo->currentText()); + combo = tabWidget->findChild("boxcolor"); + if (combo) settings->setValue("boxcolor", combo->currentText()); settings->endGroup(); // general settings @@ -367,6 +371,8 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *ssao = new QLabel("HQ Image mode:"); auto *bbox = new QLabel("Show Box:"); auto *axes = new QLabel("Show Axes:"); + auto *cback = new QLabel("Background Color:"); + auto *cbox = new QLabel("Box Color:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); @@ -383,7 +389,6 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : bval->setObjectName("box"); eval->setCheckState(settings->value("axes", false).toBool() ? Qt::Checked : Qt::Unchecked); eval->setObjectName("axes"); - settings->endGroup(); auto *intval = new QIntValidator(100, 100000, this); xval->setValidator(intval); @@ -393,6 +398,26 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : zval->setValidator(new QDoubleValidator(0.01, 100.0, 100, this)); zval->setObjectName("zoom"); + auto *background = new QComboBox; + background->setObjectName("background"); + background->addItem("black"); + background->addItem("white"); + background->addItem("darkgray"); + background->addItem("gray"); + background->addItem("silver"); + background->setCurrentText(settings->value("background", "black").toString()); + + auto *boxcolor = new QComboBox; + boxcolor->setObjectName("boxcolor"); + boxcolor->addItem("yellow"); + boxcolor->addItem("silver"); + boxcolor->addItem("gray"); + boxcolor->addItem("red"); + boxcolor->addItem("green"); + boxcolor->addItem("blue"); + boxcolor->setCurrentText(settings->value("boxcolor", "yellow").toString()); + settings->endGroup(); + grid->addWidget(xsize, 0, 0, Qt::AlignTop); grid->addWidget(ysize, 1, 0, Qt::AlignTop); grid->addWidget(zoom, 2, 0, Qt::AlignTop); @@ -400,6 +425,8 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(ssao, 4, 0, Qt::AlignTop); grid->addWidget(bbox, 5, 0, Qt::AlignTop); grid->addWidget(axes, 6, 0, Qt::AlignTop); + grid->addWidget(cback, 7, 0, Qt::AlignTop); + grid->addWidget(cbox, 8, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); @@ -407,9 +434,12 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(sval, 4, 1, Qt::AlignVCenter); grid->addWidget(bval, 5, 1, Qt::AlignVCenter); grid->addWidget(eval, 6, 1, Qt::AlignVCenter); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 7, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 7, 2); + grid->addWidget(background, 7, 1, Qt::AlignVCenter); + grid->addWidget(boxcolor, 8, 1, Qt::AlignVCenter); + + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 9, 2); setLayout(grid); }