Bạn phải làm hai việc. Đặt các tiện ích (không được đặt lại) bên trong bộ chia thành FixedSize
và thay đổi con trỏ của bộ chia phóng viên xử lý thành Qt::ArrowCursor
. Cụm tay lái bắt đầu với zero (trái và không được sử dụng), do đó xử lý đầu tiên giữa hai widget là bởi chỉ số 1.
Đây là một mẫu (đặt mã trong main.cpp):
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.resize(800, 300);
window.setWindowTitle("Splitter Test");
window.show();
QSplitter *splitter = new QSplitter(&window);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
splitter->setChildrenCollapsible(false);
splitter->show();
listview->show();
treeview->show();
textedit->show();
//make the lisview 'fix'
listview->setFixedSize(listview->width(), listview->height());
//change the cursor over the splitter handle between listview and
//treeview to ArrowCursor
splitter->handle(1)->setCursor(Qt::ArrowCursor);;
return app.exec();
}
Bây giờ đầu tiên splitter xử lý là disabled
và thứ hai hoạt động.
Tôi đoán rằng sẽ là cách dễ nhất - các trường hợp sử dụng là: I Have a ui, có thể được đưa vào một chế độ nhất định, trong đó một trong những đứa trẻ của splitter vật dụng biến mất. Trong trường hợp đó, tôi không muốn người dùng có thể di chuyển bộ chia, vì chỉ có một tiện ích ở một bên - điều đó có hợp lý không? – Thomi
Tỷ lệ cược. Tôi đoán rằng bộ chia sẽ không cung cấp một yếu tố kéo khi nó chỉ có một đứa trẻ. Bạn có thể kiểm tra xem thực sự chỉ có một đứa trẻ không? –
Vâng, bạn thực sự không thể xóa một tiện ích khỏi bộ tách - API công cộng QSplitter không cung cấp phương thức để thực hiện việc này. Điều tốt nhất bạn có thể đạt được là giấu bọn trẻ. Bất kỳ ý tưởng? – Thomi