当我按下一个按钮时,我会弹出一个用户选择的对话框并在结尾处按"确定".我想在这个对话框中有一个分割器.左侧窗格将显示树,右侧将显示其他内容.我该怎么做?
从Qt示例本身:
QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
Run Code Online (Sandbox Code Playgroud)
因此,在此示例中,创建拆分器时没有任何对话框资源.如果我必须创建这种方式,那就意味着我必须在代码中创建所有控件而不是Qt Creator.
当我需要屏幕上的其他控件时,这样做的正确方法是什么?
我在一个水平分离器中将QWidget和QTabWidget放在一起.分离器失去了它的形状,只有将鼠标悬停在它上面就可以知道有一个分离器.如何让它可见?
谢谢.
在我的应用程序中有一个由QSplitter分割的窗口,我需要删除一个小部件.
我怎样才能做到这一点?我找不到有用的方法
在QtCreator中,我创建了一个QSplitter,它将QTreeWidget与垂直布局垂直分开,右边有很多东西.
我希望默认情况下第二列占用最小化第一列所需的最小空间.
我尝试将分割器的大小和垂直策略设置为扩展,但我肯定不是正确的.我该怎么设置呢?
您可以自定义分割器手柄的厚度和背景图像
http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qsplitter
但是有没有办法添加一个小的图形箭头按钮,所以当用户点击它时,我可以调用splitter.setSizes([0, 1])
它来折叠它.
我可以使用带有QButton的vbox布局,但它占用太多空间并且看起来不太好.
假设我有一个窗口,其中有2个水平sppliters和一个按钮.如何通过单击按钮上/下移动分离器?
我有QGridLayout
一个QSplitter
就可以了.在那QSplitter
我有一个分流器,让我分路器移到左到右的两个元素.好吧,那很好.但后来我想添加另一个分配器,但是它会向上移动.(我会用图片解释.)
所以它主要有2个分离器,一个从左到右移动,另一个从上到下移动.
我希望你明白.
QGridLayout *layout = new QGridLayout(this);
QSplitter *splitter = new QSplitter();
text1 = new QPlainTextEdit();
text2 = new QPlainTextEdit();
splitter->addWidget(text1);
splitter->addWidget(text2);
text1->resize(800, this->height());
layout->addWidget(splitter, 1, 0);
browser = new QTextBrowser();
browser->resize(1, 1);
layout->addWidget(browser, 2, 0);
setLayout(layout);
Run Code Online (Sandbox Code Playgroud)
这里我只添加了一个分配器,因为我不知道如何做第二个.
我想初始化分离器手柄位置,如下所示,而不是在中间.我不能在房产中设置它.
怎么解决这个?
谢谢您的帮助.
是否有可能有一个QSplitter
固定大小的窗口小部件和另一个可变大小的窗口小部件?
这段代码设置正确,但是当窗口调整大小时,拆分器会按比例更改初始窗口小部件的大小:
vSplitter = new QSplitter(Qt::Vertical, this);
vSplitter->addWidget(widget1);
vSplitter->addWidget(widget2);
QList<int> heights;
heights.push_back(550);
heights.push_back(1000);
vSplitter->setSizes(heights);
setCentralWidget(vSplitter);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在QSplitter中有QListView和QTabWidget.QListView使用自定义模型和自定义委托.在委托中,我重新实现了paint和sizeHint方法.但是当我调整视图大小时 - 元素的高度不会重新计算.我该如何解决?示例图片:
在谷歌我发现可以从模型中发出layoutChanged,但我只想更新当前视图,因为模型的内容不会改变.
委托代码:
void ChatItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
painter->save();
ChatItem *item = static_cast< ChatItem * >( index.internalPointer() );
QTextDocument doc;
doc.setHtml( item->htmlText() );
doc.setTextWidth( option.rect.width() );
QRect clip( 0, 0, option.rect.width(), option.rect.height() );
painter->translate( option.rect.topLeft() );
QColor bgColor = index.row() % 2 ? QColor( 255, 0, 0, 40 ) : QColor( 0, 255, 0, 40 );
painter->fillRect( clip, bgColor );
doc.drawContents( painter, clip );
qDebug() << "paint: " …
Run Code Online (Sandbox Code Playgroud) qsplitter ×10
qt ×9
c++ ×5
qt-creator ×2
qt4 ×2
parent ×1
pyqt ×1
pyqt4 ×1
qlistview ×1
qt-designer ×1
qtabwidget ×1
qwidget ×1
splitter ×1