Since Q2A Plugin is all about the class and any function out of the class, those too have to include within the class. What I believe that if we check if the plugin class exists that may be alternative of the plugin_exists() function.
But here is one more problem. Q2A plugin can contain multiple class for layer, module etc.. However layer will use qa_html_theme_base class and so it is not good idea to check for that class, since it is always exists. But the plugin class.
See below. I haven't practically tried this but logically it should work
<?php
//registering plugin stuffs
qa_register_plugin_layer('q2am-item-output.php', 'Q2AM Item Layer');
qa_register_plugin_module('page', 'q2am-item-page.php', 'q2am_item_page', 'Q2AM Item Page');
qa_register_plugin_module('module', 'q2am-item-admin.php', 'q2am_item_admin', 'Q2AM Item Settings');
qa_register_plugin_phrases('q2am-Item-lang.php', 'q2am_item_lang');
if(class_exists('q2am_item_page'))
{
//do the stuffs
}
if(class_exists('q2am_item_page') && class_exists('q2am_item_admin') ....)
{
//do the stuffs
}
//May be we can get list of classes and check in_array
$classes = get_declared_classes();
if(in_array('q2am_item_page', $classes ))
{
//do the stuffs
}
Find on Gist here https://gist.github.com/q2amarket/8951524
Edit: Once class confirmed than you can check function_exists() within the class