Вы можете использовать
myDropDown.Items.Remove (ListItem li);
или
myDropDown.Items.RemoveAt (int index);
, чтобы удалить его с помощью C #.
Если вы используете QPlainTextEdit
, что-то вроде этого должно сделать трюк:
void SetHeight (QPlainTextEdit* edit, int nRows)
{
QFontMetrics m (edit -> font()) ;
int RowHeight = m.lineSpacing() ;
edit -> setFixedHeight (nRows * RowHeight) ;
}
Возможно, вы захотите добавить два или три пикселя в качестве поля; эксперимент расскажет.
Используйте QFont
, чтобы определить высоту одной строки текста в QTextEdit
(QTextEdit должен иметь свойство font ). После этого умножьте значение QFont
's height с количеством строк, которое вы хотите показать, и установите высоту (минимальную) виджета на это значение.
QTextEdit - обычный виджет, поэтому вы можете использовать свойство minimumHeight . Я считаю, однако, что невозможно установить минимальную высоту, основанную на количестве строк. Это автоматически изменит размер минимального размера виджета каждый раз, когда вы измените размер шрифта. Но если вы знаете размер шрифта, вы можете установить минимальный размер вашего виджета.
Улучшение принятого ответа о QPlainTextEdit
. В дополнение к lineSpacing
значение для setFixedHeight
должно содержать: 2 поля лежащих в основе QTextDocument
, 2 ширины кадра и поля содержимого виджета. Кроме того, QFontMetrics
должен быть получен из шрифта документа, а не из самого виджета. Итак, гипотетическая функция setHeight
должна выглядеть следующим образом:
void setHeight (QPlainTextEdit *ptxt, int nRows)
{
QTextDocument *pdoc = ptxt->document ();
QFontMetrics fm (pdoc->defaultFont ());
QMargins margins = ptxt->contentsMargins ();
int nHeight = fm.lineSpacing () * nRows +
(pdoc->documentMargin () + ptxt->frameWidth ()) * 2 +
margins.top () + margins.bottom ();
ptxt->setFixedHeight (nHeight);
}
Это должно работать:
QTextEdit *myEdit = new QTextEdit(myContentString);
QSize myEditSize = myEdit->document()->size().toSize();
myEditSize.setWidth(QWIDGETSIZE_MAX);
myEdit->setMaximumSize(myEditSize);