Как можно обратиться к объекту ввода вывода в qdateTimeEdit по средствам stylesheets?
Хочу добавить рамку как показал на картинки. Но не знаю как обратиться к объекту ввода вывода цифр (не знаю как правильно его назвать).
Вопрос как можно обратиться к объекту ввода вывода для добавления контура?
QDateTimeEdit {
padding-top: 20px;
padding-bottom: 20px;
border-image: url("/home/image/next.png");
border-width: 0px;
background-clip: content;
}
QDateTimeEdit::up-button {
subcontrol-origin: border;
subcontrol-position: top center left center;
top: 15px;
left: 20px;
width: 16px;
height:16px;
border-image: url("/home/image/next_.png");
}
QDateTimeEdit::down-button {
subcontrol-origin: border;
subcontrol-position: bottom center;
width: 16px;
height:16px;
}
Показал что хочу получить в итоги. Вот думаю можно с помощью stylesheets это сделать?
Ответы (2 шт):
для масштабируемого виджета - никак.
Весь виджет представляет из себя box-model https://doc.qt.io/qt-5/stylesheet-customizing.html#box-model т.е. при масштабировании растягивается content (при этом марджин/бордер/паддинг остаются фиксированными)
Если размер фиксирован, то подбирайте марджины
QDateTimeEdit {
margin-top: 40px;
margin-bottom: 40px;
padding-top: 1px;
background-origin: margin;
background-image: url(":/new/img");
background-clip: margin;
border: 1px solid black;
}
QDateTimeEdit::up-button {
subcontrol-origin: margin;
subcontrol-position: top center;
top: -30px;
width: 16px;
height:16px;
}
QDateTimeEdit::down-button {
subcontrol-origin: margin;
subcontrol-position: bottom center;
bottom: -30px;
width: 16px;
height:16px;
}
А вообще, учитывая количество ваших проблем с этим виджетом, я бы уже скомпоновал то что мне надо из нескольких отдельных виджетов
Виджет
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<widget name="__qt_fake_top_level">
<widget class="QFrame" name="frameWhole">
<property name="geometry">
<rect>
<x>570</x>
<y>40</y>
<width>351</width>
<height>191</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">#frameWhole{
border-image: url(":/new/img") 0 0 0 0 stretch stretch;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>70</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="frameUp">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ButtonUp">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="styleSheet">
<string notr="true">max-width: 40px;
max-height: 20px;</string>
</property>
<property name="text">
<string>туда</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDateTimeEdit" name="dateTime">
<property name="minimumSize">
<size>
<width>0</width>
<height>16</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"> QDateTimeEdit {
background-color: rgba( 255, 255, 255, 0% );
border: 1px solid black;
}
</string>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QFrame" name="frameUp_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ButtonUp_2">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="styleSheet">
<string notr="true">max-width: 40px;
max-height: 20px;</string>
</property>
<property name="text">
<string>туда</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>69</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<resources/>
</ui>
и обработчики на батоны типа такого
void MainWindow::on_ButtonUp_clicked()
{
switch (ui->dateTime->currentSectionIndex()) {
case 0:{ //day
ui->dateTime->setDateTime(ui->dateTime->dateTime().addDays(1));
break;
}
case 1:{ //month
ui->dateTime->setDateTime(ui->dateTime->dateTime().addMonths(1));
break;
}
case 2:{ //year
ui->dateTime->setDateTime(ui->dateTime->dateTime().addYears(1));
break;
}
// .... HH MM SS
}
}



