Когда установка WA_DeleteOnClose приписывает на QT MainWindow, катастрофические отказы программы при удалении ui указателя

Используйте re.sub:

replacements = {'the':'a', 
                'this':'that'}

def replace(match):
    return replacements[match.group(0)]

# notice that the 'this' in 'thistle' is not matched 
print re.sub('|'.join(r'\b%s\b' % re.escape(s) for s in replacements), 
        replace, 'the cat has this thistle.') 

Отпечатки

a cat has that thistle.

Примечания:

  • Все строки, подлежащие замене, объединяются в один шаблон, так что строка должна быть зациклирована только один раз.
  • Исходные строки передаются в re.escape, чтобы избежать интерпретации их как регулярных выражений.
  • Слова окружены r'\b', чтобы убедиться, что совпадения предназначены только для целых слов.
  • Функция замены используется для замены любого соответствия.
7
задан Jake Petroules 30 June 2010 в 20:30
поделиться

2 ответа

Вы получаете segfault в его деструкторе в первый или во второй раз? Помните, что деструктор главного окна должен выполняться только один раз. То есть, он должен выполняться либо из-за разворачивания стека, либо из-за WA_DeleteOnClose, но не оба раза.

IIRC, Creator помещает главное окно на стек main(). Поэтому, когда main() возвращается, главное окно уничтожается.

10
ответ дан 7 December 2019 в 01:15
поделиться

эта ссылка дает хорошее предложение на решении.

Меня я думаю, что лучшее должно определить как QPointer, чтобы указать на obj и протестировать ПУСТОЙ УКАЗАТЕЛЬ каждый раз с помощью него, поэтому когда UI obj уничтожается, указатель, установленный в NULL непосредственно. "QPointer обеспечивает охраняемые указатели для QObjects. Можно использовать его для содержания ссылки на диалоговое окно и когда диалоговое окно будет удалено, указатель будет установлен в NULL автоматически".

0
ответ дан 7 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: