Почему необходимо проверить? Просто насильственно очистите флаг только для чтения и удалите файл.
На самом деле, я никогда не видел, чтобы кто-нибудь когда-либо отключал сплиттер: они есть, чтобы пользователь мог разметить пользовательский интерфейс по своему усмотрению. , так зачем кому-то это отключать? Либо вам нужен разделитель, либо вы можете использовать один из обычных макетов (размер которого пользователь не может изменить).
Если вы все же хотите попробовать, я думаю, вам следует взглянуть на closestLegalPosition () или getRange () . Если вы просто вернете ширину виджета, изменение размера не должно работать.
Вам нужно сделать две вещи. Установить виджеты (которые не должны изменять размер) внутри сплиттера на FixedSize
и изменить курсор соответствующих ручек сплиттера на Qt::ArrowCursor
. Ручки начинаются с нуля (левые и неиспользуемые), поэтому первая ручка между двумя виджетами будет иметь индекс 1.
Вот пример (поместите код в 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();
}
Теперь первый хэндл сплиттера disabled
, а второй работает.