Как расположить кнопки переключения в мотиве

У меня есть программа для компиляции и работы, но я не могу понять, как разместить кнопки где-нибудь, кроме верхнего левого.

Нужно ли указывать местоположение в rowcol (как я сейчас) или указывать позицию каждой кнопки, когда я назначаю их с помощью XtCreateManagedWidget?

Обратите внимание, что у меня объявлены обратные вызовы, но я не включаю их, так как они работают.

#include <stdio.h>
#include <Xm/Xm.h>
#include <Xm/ToggleB.h>
#include <Xm/RowColumn.h>

int main(int argc, char **argv)
{
Widget shell, rowcol, toggle1, toggle2;
XtAppContext app;

//Set the window's size at 300x300
shell = XtVaAppInitialize(&app, "Radio", NULL, 0, &argc, argv, NULL,
XmNwidth, 300, XmNheight, 300, NULL);

//I want the buttons to start at 100x100
rowcol = XtVaCreateWidget("rowcol", xmRowColumnWidgetClass, shell,
XmNx, 100, XmNy, 100, NULL);

XtManageChild(rowcol);

//Add the buttons & callbacks
toggle1 = XtCreateManagedWidget("Switch1", xmToggleButtonWidgetClass, rowcol, NULL, 0);
XtAddCallback(toggle1, XmNvalueChangedCallback, toggle1_cbk, NULL);

toggle2 = XtCreateManagedWidget("Switch2", xmToggleButtonWidgetClass, rowcol, NULL, 0);
XtAddCallback(toggle2, XmNvalueChangedCallback, toggle2_cbk, NULL);

//Starts everything up
XtRealizeWidget(shell);
XtMainAppLoop(app);

return 0;
}

1

Решение

Поместите свой виджет в доску объявлений.

frame = XtVaCreateWidget("frame", xmBulletinBoardWidgetClass, shell,
XmNwidth, 300, XmNheight, 300, NULL);

rowcol = XtVaCreateWidget("rowcol", xmRowColumnWidgetClass, frame,
XmNx, 100, XmNy, 100, NULL);

XtManageChild(frame);
XtManageChild(rowcol);

Непосредственный потомок оболочки особенный. Установка его X и Y не помещает дочерний элемент в оболочку, а скорее в саму оболочку. Кроме того, многие виджеты игнорируют позиции X и Y своих детей. Но BulletinBoard нет.

Из руководства по мотивам:

BulletinBoard — это менеджер общего назначения, который позволяет помещать детей в произвольные позиции x, y.

0

Другие решения


По вопросам рекламы [email protected]